我有一个 iPad 应用程序支持所有方向的设置。在应用程序的一部分中,点击会触发需要导航控制器的模态视图控制器的显示。所以我基本上在做:
UIViewController *myViewController = [[UIViewController alloc] initWithNibName:@"MyView" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myViewController];
NSLog(@"%d", nav.interfaceOrientation);
[window.rootViewController presentModalViewController:nav animated:YES];
当 iPad 处于纵向(主页按钮)时,这可以正常工作。在任何其他方向,模态视图总是从主页按钮纵向显示,而不是设备的当前底部。
如果我完全跳过导航控制器并仅以myViewController
模态方式显示,它会正确显示。
因此,我尝试继承 UINavigationViewController 并显式覆盖shouldAutorotate:
andsupportedInterfaceOrientations:
方法,但这没有任何效果。有趣的是,如果我重写该viewWillAppear
方法并记录属性的值,即使从上面的代码访问它时它返回正确的值,它也interfaceOrientation
总是返回。1
我还检查了 Info.plist 是否支持所有方向。
那么,还有什么可能导致这种行为呢?非常感谢任何帮助。