2012-07-18 68 views
7

任何尝试最新的iOS 6测试版(版本2或3)的用户都有相同的自动旋转不工作经验?我不使用情节串连图板,但纯粹的导航控制iOS 6屏幕旋转,不使用故事板

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和以前所有的iOS 4.3,5.0.5.1模拟器,但iOS 6似乎只是越野车

回答

0

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

ios6似乎代表导航控制器,我必须定义我自己的导航控制器,并设置条件和功能来改变其旋转行为。当我加载一个视图,然后我做([self.navigationCOntroller setEnableLandscape:(BOOL)false])。这样你就可以完全控制你的导航控制器。

注:我没有尝试覆盖导航控制器的方法,但似乎只是被忽略。 (这只发生在iOS 6.0以上),还没有测试6.1,所以不知道它是否得到了解决(请让我知道它是否如此)

10

iOS 6中的自转正在改变。在iOS 6中,不推荐使用UIViewControllershouldAutorotateToInterfaceOrientation:方法。取而代之,您应该使用supportedInterfaceOrientationsshouldAutorotate方法。

Read more here

+0

何时调用shouldAutorotate函数?当我旋转屏幕时,它似乎永远不会被调用...或者,这可能与模拟器有关吗? – shim 2012-10-26 04:57:30

+0

查看我的问题在这里http://stackoverflow.com/questions/12640870/ios-6-force-device-orientation-to-landscape – 2012-10-27 15:12:06

7

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

插入self.window.rootViewController = navController;

+0

为了提高你的文章的质量,请包括如何/为什么你的答案将解决问题。 – 2012-10-03 00:29:51

+1

你刚刚救了我的命。过去3个小时我尝试了其他的一切。我一直在收到回调,但iOS忽略了我放在那里的一切。谢谢你,谢谢你,谢谢你! – gilm 2012-10-05 11:00:52

+0

在iOS上的iOS6 sdk上编译时可以使用,但在iOS6上编译时,它不适用于我在iOS5 os上运行的sdk! 您是否尝试过在iOS5上如何使用它? – Koen 2012-10-24 12:29:02