iPad方向改变问题

BP.*_*BP. 7 iphone ipad uiinterfaceorientation

我的iPhone应用程序在支持方向更改时在iPad上运行时会显示一些奇怪的行为.

该应用程序启动时使用视图控制器(为了参数而将其称为视图A)和导航控制器,并且shouldAutorotateToInterfaceOrientation仅为纵向返回YES.在导航控制器上,我按下一个视图控制器(视图B),它也仅为肖像返回YES.然后,我将另一个视图控制器(视图C)推送到支持所有旋转的导航控制器上,并根据要旋转的方向调整屏幕上的项目.

当在iPhone模拟器和设备上运行时,如果您在视图C上旋转到横向,然后点击后退按钮返回到视图B,它会做正确的事情并将视图B切换回纵向模式.(在模拟器中,它甚至可以自动将模拟器旋转回纵向.)

我遇到的问题是,当我在iPad模拟器和设备上执行完全相同的事件序列时,出现的视图B不会旋转回纵向,导航控制器仍然显示视图C的信息.然后,我点击后退按钮,视图保持不变,但导航控制器显示视图B的正常(但所有仍处于横向模式).然后,如果我再次点击后退按钮,视图B会出现在视图B导航栏项目下,最后再次点击后退我会看到带有导航栏A项目的视图A.

如果我在iPad上查看B并开始旋转,那么应该在没有触发的情况下使用NO来触发,直到我达到纵向模式,然后全部恢复正常.

该应用程序使用最新发布的iPhone SDK版本构建,并具有如下构建设置:iPhone模拟器4.0的基本SDK,iPhone的目标设备系列,iPhone OS 3.1.3的iPhone OS部署目标.

有任何想法吗?

iwa*_*bed 4

苹果公司声明:

案例: UITabBarController 或 UINavigationController 中的所有子视图控制器在通用方向集上不一致。

响应:为了确保所有子视图控制器正确旋转,您必须为代表每个选项卡或导航级别的每个视图控制器实现shouldAutorotateToInterfaceOrientation。每个人都必须同意相同的方向才能发生旋转。也就是说,对于相同的方向位置,它们都应该返回 YES。

http://developer.apple.com/iphone/library/qa/qa2010/qa1688.html

您可以在导航控制器中而不是在各个视图中设置设备方向。然后您可以检查堆栈上的视图并根据结果进行旋转。通过这种方式,导航控制器也可以处理所有方向。

  • 我认为这确实适用于你的情况。您的视图 C 支持所有方向,而 A 和 B 仅支持纵向。Apple 的 QA1688 表示 UINavigationController 下的所有子视图控制器都必须就方向注释集达成一致。我在[这个问题](http://stackoverflow.com/questions/3086684)中遇到了同样的问题(vc不同意方向)。 (2认同)