2

我的 MainViewController 中有这个方法:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"MAIN CONTAINER WILL ANIMATE");
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

当我旋转时,NSLog 出现了,一切都很完美。但是,如果我从 MainViewController 中显示 modalViewController,然后旋转,则 NSLog 不再出现,并且我的 MainViewController 永远不知道设备已旋转,因此当 modalView 被关闭时,界面不会针对旋转进行调整。

关于为什么模式视图可以阻止父级接收旋转更新的任何想法?这是典型的,还是我的设置有问题?

为了确保,我尝试通过 modalViewController 将 modalViewController 呈现为子视图[mainViewController.view addSubview:modalView.view],并且旋转更新正确生效。只有当我这样做时[mainViewController presentModalViewController:modalViewController];,更新才会生效。

4

3 回答 3

4

当然,当视图控制器以模态方式呈现时,其他视图控制器根本不会收到任何消息。这就是模态在这种情况下的含义。

显而易见的解决方案是检查无模式视图控制器的 viewWillAppear 方法中的方向。

于 2012-04-13T13:43:19.913 回答
1

您必须检查以下内容的实施:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation. 
    return YES;
 }

在这两种观点中。

于 2012-04-13T13:38:27.477 回答
0

您需要在 viewWillAppear 中将布局调整为当前界面方向。显然,由于视图是不可见的,因此在模态视图控制器启动时不会调用动画函数。

于 2012-04-13T13:52:34.127 回答