1

我有一个 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 是否支持所有方向。

那么,还有什么可能导致这种行为呢?非常感谢任何帮助。

4

1 回答 1

1

尝试在导航控制器的子类中实现 preferredInterfaceOrientationForPresentation。

以下对我有用:

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return self.interfaceOrientation;
}
于 2013-11-05T02:40:09.540 回答