iOS 8.3支持的方向崩溃问题

7
我有一个和iOS 8.3相关的应用程序问题。 我的应用程序经常崩溃,并且总是出现相同的错误:
终止应用程序,原因是未捕获的异常'UIApplicationInvalidInterfaceOrientation',原因是:'支持的方向与应用程序没有共同的方向,而[... shouldAutorotate]正在返回YES'
其中"..."是许多类。
特别的问题是UIAlertView类,我有与UIAlertView crashs in iOS 8.3相同的问题,但我无法解决子类化UIAlertView(苹果表示UIAlertView类旨在按原样使用,不支持子类化)或使用UIAlertController。
你能帮帮我吗?

当应用程序不支持横向模式,但UIViewController返回YES以进行横向时,我会看到“支持的方向与应用程序没有共同的方向”错误提示。 - Injectios
如果没有代码展示您是如何子类化UIAlertView的,我们无法为您提供帮助。 - Black Frog
苹果公司表示,UIAlertView类旨在按原样使用,不支持子类化,我无法对UIAlertView进行子类化,因此无法向您展示任何内容。 - Anna565
更改为UIAlertController,UIAlertView已弃用。 - jcesarmobile
我进行了更改,但错误始终相同:由于未捕获的异常'UIApplicationInvalidInterfaceOrientation',应用程序终止,原因是“支持的方向与应用程序没有共同的方向,并且[UIAlertController shouldAutorotate]返回YES”。 - Anna565
4个回答

6
很多其他应用程序没有因为这个错误而崩溃,因此我想知道我们的应用程序中是否还有其他原因导致了这个错误。我确保iOS 8会获取UIAlertController,以便它不会崩溃,但这并不能解决第三方框架的问题。 我们团队中的另一位工程师最终通过做以下事情来解决它:
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
    // This used to be:
    //return UIInterfaceOrientationPortrait;
}

2
谢天谢地有这个答案!我也遇到了完全相同的问题。 - Andrew Garrison

2

1

在尝试了这里的解决方案后,没有一个适用于我。我的应用程序支持iOS 6-8,并且使用一些内部使用UIAlertView的库,因此简单地有条件地编译以在可用时使用UIAlertController不是一个选项。

我想出了一个解决方法,解决了我的问题。您的情况可能会有所不同。我将头文件包含在头前缀文件中,以确保在显示UIAlertView的任何位置都包含它。

我在这里发布这篇文章,为那些遇到这个问题并且在网络上找到的解决方案不起作用的人提供帮助。希望对您有所帮助。

https://gist.github.com/joshhudnall/cdc89b61d0a545c85d1d


0

我用以下方法解决了这个问题:

if objc_getClass("UIAlertController") != nil {

     println("UIAlertController can be instantiated")

     //make and use a UIAlertController iOS8

}
else {

     println("UIAlertController can NOT be instantiated")

     //make and use a UIAlertView iOS7
}

那么你就可以让你的应用在iOS 7和iOS 8上运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接