我的应用有一个 UINavigationController,它不支持旋转。但是我想在应该支持旋转的导航控制器上显示一个模式视图控制器。这可能吗?我试图覆盖shouldAutorotateToInterfaceOrientation
模态显示的视图控制器,但这似乎不起作用。
3 回答
我认为除了shouldAutorotateToInterfaceOrientation
显示模态返回的视图控制器之外YES
,您的导航控制器shouldAutorotateToInterfaceOrientation
应该被覆盖以YES
在显示模态视图控制器时返回,NO
否则。
您需要确保您的设备生成设备方向通知 (UIDeviceOrientationDidChangeNotification):
确保:
generateDeviceOrientationNotifications设置为 true
来自苹果文档:
“窗口对象完成了与更改当前方向相关的大部分工作。但是,它与根视图控制器一起工作以确定是否应该发生方向更改,如果是,应该调用哪些附加方法来响应到变化。如果这个控制器是一个容器,它可能依赖一个孩子来决定是否应该发生定向。
因此,如果您的根视图控制器(UINavigationController?)不支持旋转,那么当您的应用启动时,这可能会设置为 false。在这种情况下,您需要在适当的时候重新打开它:
UIDevice myDevice = [UIDevice currentDevice];
[myDevice beginGeneratingDeviceOrientationNotifications];
我在另一篇文章中找到了答案:根 ViewController 内的 UIViewController 不旋转
关键是
- (void)addChildViewController:(UIViewController *)childController
和
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers