多个Windows旋转问题 - iPhone / iPad

时间:2010-08-26 20:03:01

标签: iphone rotation uiwindow

我的应用使用2个UIWindows。 第一个显示的TabBar控制器带有ViewControllers,只能旋转到纵向方向。到这里,一切都很好。

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

在另一个窗口,我有一个旋转到所有方向的UIViewController。

问题是当我显示第二个窗口时

[secondWindow makeKeyAndVisible];

然后返回第一个

[firstWindow makeKeyAndVisible];

状态栏旋转到所有方向,并且不会触发事件shouldAutorotateToInterfaceOrientation。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

在一个应用程序中有多个UIWindows很好,但需要注意的是,Apple的代码似乎检查了你拥有的每个UIWindow,并查看最顶层的视图控制器是否允许某个旋转。如果任何窗口允许旋转,无论UIWindow是最前面还是可见,状态栏都会旋转。

在我自己的应用程序中,我隐藏了我没有使用的UIWindow,并在相关的UIViewControllers中添加了一个isHidden检查,如果窗口当前是隐藏的,则不允许旋转。

答案 1 :(得分:1)

  

在一个应用程序中有多个UIWindows很好,但需要注意的是,Apple的代码似乎检查了你拥有的每个UIWindow,并查看最顶层的视图控制器是否允许进行一定的旋转。

根据答案,做了很多测试并得出结论,状态栏的旋转取决于每个窗口的最顶层视图控制器。