【发布时间】:2012-04-13 13:31:08
【问题描述】:
我的 MainViewController 中有这个方法:
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"MAIN CONTAINER WILL ANIMATE");
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
当我旋转时,NSLog 出现了,一切都很完美。但是,如果我从 MainViewController 中显示 modalViewController,然后旋转,则 NSLog 不再出现,并且我的 MainViewController 永远不知道设备已旋转,因此当 modalView 被关闭时,界面不会针对旋转进行调整。
关于为什么模态视图可以阻止父级接收旋转更新的任何想法?这是典型的,还是我的设置有问题?
为了确保,我尝试通过[mainViewController.view addSubview:modalView.view] 将 modalViewController 呈现为子视图,并且旋转更新正确生效。只有当我执行[mainViewController presentModalViewController:modalViewController]; 时,更新才会生效。
【问题讨论】:
-
我不知道为什么模态视图控制器会阻止这个方法调用,我自己也对这个问题感到沮丧!所以恐怕我不太了解为什么不这样做,但我确实知道如何绕过它。我假设在您的代码中的某处,您使用 [self.view presentModalViewController:viewController] 行?而不是这样做,只需做 [self.view addSubview:viewController.view] (我认为它的这个,没有我面前的代码)基本上而不是模态地呈现它只是将它的视图添加到当前视图和所有现在应该调用 will/did/is 轮换方法!
-
而不是什么..查看我的更新..也许这就是你得到的。但我不希望它成为子视图..我想让它作为模式视图..
-
对不起...触发快乐输入键! :D 现已编辑!
-
问题是只有在你的主视图可见时才会调用它。添加模态视图后,您的主视图将不再捕捉旋转的调用。如果你愿意,你可以像我在这篇文章中的回复一样做一些事情:stackoverflow.com/questions/10131869/… 如果你使用该方法,主视图控制器仍然会收到发生旋转的通知,即使它不可见。不确定这是否会 100% 帮助你,但我想这是一个开始。
标签: iphone objective-c ios