关于shouldAutorotateToInterfaceOrientation方法

时间:2012-05-02 06:58:56

标签: view

我正在处理一些viewControllers使用的应用程序。当我在横向/纵向模式下从一个视图推送到另一个视图并以相同模式向后移动时,调用的shouldAutorotateToInterfaceOrientation方法将返回。

但是当相同的步骤重复并且在第二个或第三个视图上改变方向并向后移动时,则不应调用AutorotateToInterfaceOrientation方法。并且查看控件受到干扰。

请为此提供可靠的解决方案。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您希望在设备方向更改时,在ViewControllers堆栈上的第二个或第三个viewController上调用shouldAutorotateToInterfaceOrientation。

shouldAutorotateToInterfaceOrientation仅在顶部viewController上调用。如果在第二个或第三个viewController的方法中执行任何布局代码,则不执行代码。

解决方案很简单,很多,具体取决于您的代码。这是一个应该工作的(没有在Xcode中测试)。在顶级ViewController的shouldAutorotateToInterfaceOrientation方法中,添加如下内容:

for (UIViewController *vc in [self childViewControllers])
{ 
    [vc shouldAutorotateToInterfaceOrientation];
}

如果你有一个指向特定childViewController的指针,你可以专门调用它。

文档说明:

  

此方法的实现应该根据interfaceOrientation参数中的值返回YES或NO。不要尝试获取interfaceOrientation属性的值或检查UIDevice类报告的方向值。您的视图控制器要么能够支持给定的方向,要么不支持。

要进行任何布局,您可以使用:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

希望这有帮助!