2

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

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

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

为什么是这样?不能处理多个视图的方向变化吗?

谢谢!

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

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

4

3 回答 3

2

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

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

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

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

于 2010-03-06T00:58:18.060 回答
2

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

于 2009-12-23T20:08:24.553 回答
0

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

于 2009-12-23T18:40:12.853 回答