多窗口旋转问题 - iPhone / iPad

6

我的应用使用了2个UIWindow窗口。第一个窗口展示了一个标签栏控制器,其中的视图控制器只能旋转到纵向方向。到这里一切都正常工作。

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

在另一个窗口中,我有一个UIViewController可以旋转到所有方向。问题是当我展示第二个窗口时,它不能正确地适应屏幕方向。
[secondWindow makeKeyAndVisible];

然后回到第一个

[firstWindow makeKeyAndVisible];

状态栏可以旋转到所有方向,但是 shouldAutorotateToInterfaceOrientation 事件没有触发。我该怎么解决这个问题?
2个回答

5

在一个应用程序中拥有多个UIWindows是可以的,但是需要注意的是,苹果的代码似乎会检查您拥有的每个UIWindow,并查看最顶层的视图控制器是否允许某种旋转。如果任何一个窗口允许旋转,则您的状态栏将旋转,而不管该UIWindow是否位于最前面或可见。

在我的应用程序中,我隐藏了我没有使用的UIWindow,并在相关的UIViewControllers中添加了一个isHidden检查,以防止在窗口当前被隐藏时进行旋转。


1
在一个应用程序中拥有多个UIWindows是可以的,但需要注意的是,苹果公司的代码似乎会检查你拥有的每个UIWindow,并查看最上层的视图控制器是否允许一定的旋转。根据答案所述,进行了多次测试并得出结论:状态栏的旋转取决于每个窗口中最上层的视图控制器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接