我有两个UIViewControllers,“A”和“B”,其中“A”覆盖了shouldAutorotateToInterfaceOrientation,为UIInterfaceOrientationPortrait返回YES,“B”为所有方向返回YES。在我的例子中,“A”是根导航视图控制器,然后我使用pushViewController作为“B”。之后我将设备旋转成横向,成功自动旋转“B”,然后弹出“B”(后退按钮或通过popViewController)返回“A”。
在定位iPhone OS 3.1.3时,“A”会按预期返回纵向。在针对iPhone OS 3.2时,我有两个副作用:
在研究这个问题时,我看到其他答案建议手动执行轮换([UIDevice setOrientation]或通过转换),但是这无助于理解问题是什么,特别是为什么它在两个操作系统之间的行为不同。
所以我的问题是:UINavigationController堆栈上的所有UIViewControllers都必须支持完全相同的方向吗?如果没有,那么我需要做些什么才能让它像OS 3.1.3一样运行?
答案 0 :(得分:1)
似乎较新的操作系统要求UINavigationController堆栈中的所有UIViewControllers都支持相同的方向集。
答案 1 :(得分:0)
我遇到了同样的问题,我在这个链接上找到了答案:UINavigationController navigation stack problems in landscape mode我的一个视图控制器没有在shouldAutorotateToInterfaceOrientation上返回YES。