-1

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

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

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

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

但是现在应用程序崩溃了,并给出了这个错误:

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

有什么建议么?

4

4 回答 4

5

请检查您使用的 xcode 版本。

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

您在项目中使用以下行。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
    }

-(BOOL)shouldAutorotate
{
    return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}
于 2012-11-01T04:08:47.870 回答
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
于 2012-11-01T04:40:13.327 回答
0

记住一件事。在 iOS 6 中

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

已弃用。

你不能在 iOS 6 中使用它。为了在 UINavigationController 的 viewControllers 中支持不同的界面方向,你需要继承 UINavigationController 或创建一个 Category。

于 2012-11-01T04:13:16.520 回答
0

代码看起来不错。它不应该仅仅因为这些方法而崩溃。问题可能出在代码的另一部分。但是,在这里我想告诉你。上述shouldAutorotateToInterfaceOrientation方法的方向方法在 iOS 6 中已弃用。如果您想了解更多如何解决方向问题 ,您应该看看这个

于 2012-11-01T06:10:27.483 回答