我的 iPhone 应用程序在 iPad 上运行时显示一些关于支持方向更改的奇怪行为。
该应用程序以视图控制器(为了论证起见,将其称为视图 A)和导航控制器启动,并且 shouldAutorotateToInterfaceOrientation 仅针对纵向返回 YES。在导航控制器上,我推送了一个视图控制器(视图 B),它也仅针对纵向返回 YES。然后,我将另一个视图控制器(视图 C)推到支持所有旋转的导航控制器上,并根据旋转方向调整屏幕上的项目。
当它在 iPhone 模拟器和设备上运行时,如果您在视图 C 上旋转到横向,然后点击后退按钮返回到视图 B,它会做正确的事情并将视图 B 切换回纵向模式。 (在模拟器中,它甚至会自动将模拟器旋转回纵向。)
我遇到的问题是,当我在 iPad 模拟器和设备上执行完全相同的事件序列时,出现的视图 B 不会旋转回纵向,并且导航控制器仍然显示视图 C 的信息。然后,我点击后退按钮,视图保持不变,但导航控制器显示视图 B 正常(但仍处于横向模式)。然后,如果我再次点击后退按钮,视图 A 会出现在视图 B 导航栏项目下方,最后再次点击后退按钮会将我置于带有导航栏 A 项目的视图 A 上。
如果我在 iPad 上查看 B 并开始旋转,shouldAutorotate InterfaceOrientation 将触发 NO,直到我到达纵向模式,然后一切恢复正常。
该应用程序是使用最新发布的 iPhone SDK 版本构建的,构建设置如下:iPhone Simulator 4.0 的基础 SDK、iPhone 的目标设备系列、iPhone OS 3.1.3 的 iPhone OS 部署目标。
有任何想法吗?
苹果公司声明:
Case:UITabBarController 或 UINavigationController 中的所有子视图控制器在通用方向集上不一致。
回复:为了确保所有子视图控制器正确旋转,您必须为代表每个选项卡或导航级别的每个视图控制器实现shouldAutorotateToInterfaceOrientation。每个人都必须同意相同的方向才能发生旋转。也就是说,对于相同的方向位置,它们都应该返回 YES。
http://developer.apple.com/iphone/library/qa/qa2010/qa1688.html
您可以在导航控制器中而不是在各个视图中设置设备方向。然后您可以检查堆栈上的视图并根据结果进行旋转。通过这种方式,导航控制器也可以处理所有方向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)