我的应用使用2个UIWindows。 第一个显示的TabBar控制器带有ViewControllers,只能旋转到纵向方向。到这里,一切都很好。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (UIInterfaceOrientationIsPortrait(interfaceOrientation));
}
在另一个窗口,我有一个旋转到所有方向的UIViewController。
问题是当我显示第二个窗口时
[secondWindow makeKeyAndVisible];
然后返回第一个
[firstWindow makeKeyAndVisible];
状态栏旋转到所有方向,并且不会触发事件shouldAutorotateToInterfaceOrientation。我该如何解决这个问题?
答案 0 :(得分:5)
在一个应用程序中有多个UIWindows很好,但需要注意的是,Apple的代码似乎检查了你拥有的每个UIWindow,并查看最顶层的视图控制器是否允许某个旋转。如果任何窗口允许旋转,无论UIWindow是最前面还是可见,状态栏都会旋转。
在我自己的应用程序中,我隐藏了我没有使用的UIWindow,并在相关的UIViewControllers中添加了一个isHidden检查,如果窗口当前是隐藏的,则不允许旋转。
答案 1 :(得分:1)
在一个应用程序中有多个UIWindows很好,但需要注意的是,Apple的代码似乎检查了你拥有的每个UIWindow,并查看最顶层的视图控制器是否允许进行一定的旋转。
根据答案,做了很多测试并得出结论,状态栏的旋转取决于每个窗口的最顶层视图控制器。