0

我在特定帧 CGRectMake(40,50,400,500) 中将 NavController 显示为 modalViewController。哪个工作正常。现在我在 self 中有一个按钮(显示 modalViewController 的视图控制器),按下该按钮时,我需要在 NavController 上显示一些消息。但问题是当我展示 modalViewController 时。整个屏幕区域变暗/禁用。因此,无法在自己中触摸/单击该按钮。

这是我展示视图控制器的代码。我想,我在这里遗漏了一些东西。请帮忙。提前致谢。

aNavController.modalPresentationStyle = UIModalPresentationFormSheet;
anavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:aNavController animated:YES];
aNavController.view.superview.frame = CGRectMake(40,50, 400, 500);
4

3 回答 3

1

presentModalViewController 创建一个模态对话框。当模态视图控制器启动时,用户不能在父视图上做任何事情,直到模态视图被关闭。

于 2012-07-09T19:34:51.280 回答
0

问题是您在实例化 aUIAlertView的同时在的委托方法presentModalViewController中调用您的模态视图。UIAlertViewclickedButtonAtIndex

像这样:

- (IBAction)clickedMyButton:(id)sender
{
    UIAlertView *alertView = [[UIAlertView alloc]
                 initWithTitle: @"Title"
                 message: @"Message"
                 delegate:self
                 cancelButtonTitle:@"Close Button"
                 otherButtonTitles:@"Modal Button", @"Some Other Button", nil];
    [alertView show];
}



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        NSLog(@"User Selected Cancel");
    }
    else if (buttonIndex == 1) {
        NSLog(@"Modal Button Clicked");
        aNavController.modalPresentationStyle = UIModalPresentationFormSheet;
        anavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        [self presentModalViewController:aNavController animated:YES];
        aNavController.view.superview.frame = CGRectMake(40,50, 400, 500);
    }else {
        NSLog(@"Some Other Button Clicked");
    }
}

或者,如果您希望您UIAlertView的显示在您的导航控制器之上,请忽略上述内容,只需等待调用您的警报,直到导航控制器- (void)viewDidAppear:(BOOL)animated方法。

此外,除非绝对必要,否则我建议您更改框架以保持在屏幕范围内。前任:CGRectMake(40, 50, 320, 480);

于 2012-07-09T20:09:25.783 回答
0

最后,我能够解决与 UIModalPresentationFormSheet 相同的工作方式。

我将 aNavController 作为子视图添加到 [[UIApplication sharedApplication] keyWindow] 并解决了我的所有问题。

谢谢大家的意见。

于 2012-07-27T05:13:01.480 回答