7

任何尝试最新 iOS 6 测试版(版本 2 或 3)的人都有相同的自动旋转不工作体验?

我没有使用故事板,而是纯粹的导航控制:

self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window addSubview:navController.view];

并且有:

- (BOOL)shouldAutorotateToInterfaceOrientation: ](UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
    return YES;
}
}

- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAllButUpsideDown;
}

但是 IOS 根本没有支持,在 3GS/4S 和 4.3,5.0.5.1 模拟器上与所有以前的 iOS 都可以正常工作,但 iOS 6 似乎只是有问题

4

3 回答 3

10

iOS 6 中的自动旋转正在发生变化。在 iOS 6 中,不推荐使用的shouldAutorotateToInterfaceOrientation:方法。UIViewController取而代之的是,您应该使用supportedInterfaceOrientationsandshouldAutorotate方法。

在这里阅读更多

于 2012-07-18T15:04:24.043 回答
7

代替[self.window addSubview:navController.view];

插入self.window.rootViewController = navController;

于 2012-10-02T06:40:30.287 回答
0

解决方案是:由于我的应用程序试图从 4.3+ 开始支持,我必须使用导航控制器来进行每个视图切换。

通过 ios6 似乎代表导航控制器,我必须定义自己的导航控制器,并设置条件和功能来改变其旋转行为。

当我加载视图时,我会执行 ([self.navigationCONtroller setEnableLandscape:(BOOL)false])。这样,您就拥有了导航控制器的完整控制器。

注意:我确实尝试过覆盖导航控制器方法,但似乎只是被忽略了。(这也只发生在 ios 6.0 上),还没有测试 6.1,所以不确定它是否得到修复(如果有,请告诉我)

于 2012-11-07T11:10:02.007 回答