在 iOS 7 中显示 UIAlertView 时出现旋转问题
Posted
技术标签:
【中文标题】在 iOS 7 中显示 UIAlertView 时出现旋转问题【英文标题】:rotation problems when a UIAlertView is showing in iOS 7 【发布时间】:2013-11-08 02:13:53 【问题描述】:在 ios7 中,很少但偶尔,当我在显示 UIAlertView
时旋转我的应用程序时,只有 alertView 和状态栏旋转,而不是我的应用程序。有其他人经历过这种情况和/或找到解决方法吗?
【问题讨论】:
以下方法都不适合我,虽然我还没有在 7.1 中重新测试 【参考方案1】:我已经通过向应用委托添加下一个方法解决了这个问题:
- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
NSArray *windows = [application windows];
for (UIWindow *nextWindow in windows)
[[nextWindow.rootViewController class] attemptRotationToDeviceOrientation];
【讨论】:
这解决了我的问题,看起来绝对合理!但我想知道这是否是 iOS 7+ 的错误,因为它们在 iOS 7 中更改了 UIALertView 的层次结构。 @user3404693 因为你不能在 iOS8 中使用 UIAlertView。请改用 UIAlertController。无法保证(根据我的经验) UIAlertView 可以在 iOS8 上正常工作。【参考方案2】:我遇到了相反的问题。我的应用程序会旋转,但警报视图不会旋转。我发现这是因为我在 UIActionSheet
被解雇后立即显示警报视图(所以当它发生解雇动画时)。这似乎触发了一个错误,该错误将使警报视图不随应用程序旋转(以及稍后的其他一些小视觉问题)。我通过在操作表开始关闭后半秒显示警报视图来解决这个问题,如下所示:
[alertView performSelector:@selector(show) withObject:nil afterDelay:0.5];
【讨论】:
我没有显示UIActionSheet
,而是在显示UIAlertView
时关闭了视图控制器,这解决了问题。
这就是它在我的应用中发生的方式!
修复了我的错误。谢谢。对我来说,这仅在 iOS 7 上不需要 iOS 8 或 iOS 6。【参考方案3】:
我认为iOS7问题的根源在于Apple改变了UIAlertView的外观机制。 从现在开始,在启动两个私有视图控制器之后,任何显示的 alertView 都会出现
_UIModalItemAppViewController
_UIModalItemsPresentingViewController
换句话说,现在 UIAlertView 不是一个纯粹的视图 - 它是一些复杂的视图控制器集合的一部分,具有完整的视图控制器生命周期。
【讨论】:
以上是关于在 iOS 7 中显示 UIAlertView 时出现旋转问题的主要内容,如果未能解决你的问题,请参考以下文章
UIActivityIndicatorView 未显示在 UIAlertView - iOS7 [重复]
在带有 Xamarin.iOS 的 iOS 7 上的 ViewDidAppear 方法中显示阻止的 UIAlertView 不起作用
如何在 iOS 7 中以编程方式正确关闭 UIAlertView?
如何在 iOS 8 上显示没有按钮的 UIAlertView?