当我更改视图帧iOS 8时,UIViewController视图消失

时间:2014-08-18 21:16:23

标签: objective-c uiviewcontroller ios8

iOS 7的这段代码运行正常,但是当它运行在XCode 6& iOS8模拟器,在我对self.webview.frame进行一些小改动之后,视图消失了(UIViewController viewWillDisappear被调用)。当我从actionSheet中选择“编辑”选项时会发生这种情况。但是,当我点击webView并通知/调用keyboardWillShow:时,它不会消失。这个UIViewController由rootViewController和modalPresentationStyle呈现:UIModalPresentationFormSheet我很感激任何帮助。

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    NSString *title = [actionSheet buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Edit"]){
        [self switchModeTo:@"Edit"];
    }
}

- (void)switchModeTo:(NSString *)mode{
    if([mode isEqualToString:@"Edit"]){
        self.isEditMode = YES;
        [self.btnApply setHidden:NO];
        [self.btnMore setHidden:YES];
        CGRect frame = [self.webview frame];
        frame.origin.y = 44;
        frame.size.height = 492;
        [self.webview setFrame:frame];
    }
}

- (void)keyBoardWillShow:(NSNotification *)notif{
    [self switchModeTo:@"Edit"];
}

1 个答案:

答案 0 :(得分:0)

我有一个非常类似的问题。我试图提出一个从动作表触发的模态视图控制器。提出了模态视图,然后立即被驳回。

我创建了另一个测试用例,并收到以下消息:

Warning: Attempt to present <ModalViewController: 0x78fbadd0>  on <MainViewController: 0x78fa71c0> which is already presenting (null)

事实证明,操作表弹出窗口干扰了视图控制器呈现另一个模态视图控制器的能力。与您的示例一样,如果我从动作表以外的其他内容触发相同的代码(在我的情况下,是一个按钮),它运行正常。

为了解决这个问题,我简单地介绍了一个小延迟,让操作表popover有机会摆脱困境,如下例所示:

- (void)actionSheet:(UIActionSheet *)actionSheet
clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if ( buttonIndex != actionSheet.cancelButtonIndex ) {
        [self performSelector:@selector(showModalView) withObject:nil afterDelay:0.3];
    }
}

- (void)showModalView
{
    ModalViewController* modalVC = [[ModalViewController alloc] init];
    [self presentViewController:modalVC animated:YES completion:nil];
}