无法使用多个视图控制器管理方向

时间:2009-12-23 17:47:49

标签: iphone ios5 uiview uiviewcontroller orientation

我正在尝试构建一个在主窗口中有两个子视图的iPhone应用程序。每个视图都有自己的UIViewController子类与之关联。此外,在每个控制器的实现中,我添加了以下方法:

-(BOOL)shouldAutorotateToInterfaceOrientation:
 (UIInterfaceOrientation)interfaceOrientation {
    return YES;
   }

因此,我希望这两种观点都能对方向的变化作出反应。然而,这种情况并非如此。只有添加到应用主窗口的第一个视图才会响应方向。 (如果我交换了添加视图的顺序,那么只有其他视图会响应。换句话说,任何一个都可以工作 - 但一次只能使用一个。)

这是为什么?是否无法处理多个视图的方向更改?

谢谢!

编辑:其他人有这个问题,所以我在这里复制我的解决方案:

我能够通过使用方法“shouldAutoRotate ...”提供根视图和根视图控制器并将我的其他视图作为子视图添加到根视图来解决此问题。子视图继承自动旋转行为,其关联的视图控制器不应该覆盖“shouldAutoRotate ...”

3 个答案:

答案 0 :(得分:2)

您需要覆盖所有三个控制器上的shouldAutorotateToInterfaceOrientation方法。

答案 1 :(得分:2)

最后在这里发布我的解决方案:

基本上,它归结为拥有“root”UIViewController。在这,我有方法:

-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
        return YES;
}

我还将我想要自动旋转的视图作为子视图添加到此根UIViewContoller的UIView中。这些子视图也有视图控制器,但覆盖shouldAutorotateToInterfaceOrientation。事实上,将这种方法添加到那些视图控制器似乎没有任何效果。只有根视图控制器的shouldAutorotateToInterfaceOrientation似乎可以正常工作,所有子视图都可以正常旋转。

答案 2 :(得分:0)

您可以尝试在类中实现此方法,该视图包含viewController的视图