6

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

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

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

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

[secondWindow makeKeyAndVisible];

然后回到第一个

[firstWindow makeKeyAndVisible];

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

4

2 回答 2

5

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

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

于 2011-07-26T22:11:15.113 回答
1

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

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

于 2013-08-23T05:16:09.280 回答