iOS 6在设备轮换时崩溃

时间:2012-11-01 03:44:47

标签: iphone ios6 orientation device-orientation

这不是一个重复的问题。尚未提供最终工作解决方案。在我接受答案或找到并提供我自己的解决方案之前,请不要关闭此问题。谢谢!

=============================================== =================== 使用Xcode 4.5.1,我有一个标签栏应用程序,里面有5个标签。每个选项卡都包含一个UINavigationController。因此,整个应用程序需要在纵向模式下查看,除了一个唯一的ViewController - 一个“模态”VC,它以全屏模式打开,并且打算在横向模式下查看。

这在iOS5中运行得非常好 - 我只是在一个特定的ViewController中使用了以下代码:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

但是现在App崩溃了,并且出现了这个错误:

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation',    
reason: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

请检查您使用的xcode版本。

您使用的是XCODE 4.5:shouldAutorotateToInterfaceOrientation委托折旧。

您在项目中使用以下行。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
    }

-(BOOL)shouldAutorotate
{
    return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

答案 1 :(得分:1)

您需要使用它来避免iOS6崩溃..

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    return UIInterfaceOrientationMaskAllButUpsideDown; //Getting error here? then update ur xcode to 4.5+
}
#endif

答案 2 :(得分:0)

记住一件事。在iOS 6中

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

已弃用。

你不能在iOS 6中使用它。为了支持UINavigationController的viewControllers中的不同接口方向,你需要为UINavigationController创建子类或者创建它的类别。

答案 3 :(得分:0)

代码看起来不错。它应该不会因为这些方法而崩溃。 问题可能在代码的另一部分。 但是,我想在此告诉你。 以上shouldAutorotateToInterfaceOrientation方法方向方法已在iOS 6中弃用。 如果您想了解更多如何解决方向问题 you should take a look of this