我的应用程序完全是为 IOS6 设计的。我为 iPhone 使用一个 xib,为 iPad 使用另一个。我的 AppDelegate 设置了一个 TabBarController,尽管 TabBarController 本身没有类。TabBarController 有两个选项卡项,1 个 NavigationController,1 个 View Controller,每个都有自己的类。我希望 iPad 能够以纵向模式、倒置模式和正常模式运行。在 Xcode 中 Target 的摘要选项卡上,我支持将界面方向设置为 Portrait 和 Portrait Upside Down。
我对 iOS 6 的理解是你只需要把
- (NSUInteger)supportedInterfaceOrientations
在类的最高父控制器中,并设置您希望它使用的掩码以及所有要使用的子容器。所以,在导航控制器的根视图控制器中,我放了:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskPortraitUpsideDown;
}
在每个子类中,我放了:
- (BOOL)shouldAutorotate{
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES;
}
else
{
return NO;
}
}
然后我将相同的两种方法放在第二个选项卡中,它只是一个视图控制器类。
我在我的 iPad 上安装了该应用程序,它在纵向模式下运行良好,但当我将其倒置时没有旋转。我退出应用程序并将 iPad 倒置,但当我再次启动应用程序时,它仍然停留在同一个位置。所以,我完全杀死了这个应用程序,并从头开始颠倒了它。启动画面是倒置的,但是当屏幕消失时,应用程序仍然只以纵向模式显示,导致显示倒置。
我错过了什么?