我有一个设置,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:
和supportedInterfaceOrientations:
方法,但这没有任何效果。有趣的是,如果我覆盖viewWillAppear
方法并记录interfaceOrientation
属性的值,即使从上面的代码访问它时返回正确的值,它也会返回1
。
我还检查过Info.plist中是否支持所有方向。
那么,还有什么可能导致这种行为呢?非常感谢任何帮助。
答案 0 :(得分:1)
尝试在导航控制器的子类中实现preferredInterfaceOrientationForPresentation。
以下对我有用:
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return self.interfaceOrientation;
}