2

我的应用有一个 UINavigationController,它不支持旋转。但是我想在应该支持旋转的导航控制器上显示一个模式视图控制器。这可能吗?我试图覆盖shouldAutorotateToInterfaceOrientation模态显示的视图控制器,但这似乎不起作用。

4

3 回答 3

1

我认为除了shouldAutorotateToInterfaceOrientation显示模态返回的视图控制器之外YES,您的导航控制器shouldAutorotateToInterfaceOrientation应该被覆盖以YES在显示模态视图控制器时返回,NO否则。

于 2012-05-25T10:50:32.490 回答
0

您需要确保您的设备生成设备方向通知 (UIDeviceOrientationDidChangeNotification):

确保:

generateDeviceOrientationNotifications设置为 true

来自苹果文档:

“窗口对象完成了与更改当前方向相关的大部分工作。但是,它与根视图控制器一起工作以确定是否应该发生方向更改,如果是,应该调用哪些附加方法来响应到变化。如果这个控制器是一个容器,它可能依赖一个孩子来决定是否应该发生定向。

因此,如果您的根视图控制器(UINavigationController?)不支持旋转,那么当您的应用启动时,这可能会设置为 false。在这种情况下,您需要在适当的时候重新打开它:

UIDevice myDevice = [UIDevice currentDevice]; 
[myDevice beginGeneratingDeviceOrientationNotifications]; 
于 2012-05-25T10:57:58.657 回答
0

我在另一篇文章中找到了答案:根 ViewController 内的 UIViewController 不旋转

关键是

- (void)addChildViewController:(UIViewController *)childController

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers

于 2012-05-27T07:45:20.907 回答