在 iOS 7 中显示 UIAlertView 时的旋转问题



在 iOS7 中,很少但偶尔,当我在显示UIAlertView时旋转我的应用程序时,只有 alertView 和状态栏旋转,而不是我的应用程序。 有没有人经历过这种情况和/或找到了解决方法?

我已经通过将下一个方法添加到应用程序委托来解决此问题:

- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration  {
NSArray *windows = [application windows];
for (UIWindow *nextWindow in windows) {
    [[nextWindow.rootViewController class] attemptRotationToDeviceOrientation];
     }
}

我遇到了相反的问题。我的应用将旋转,但警报视图不会旋转。我发现这是因为我在UIActionSheet被解除后立即显示警报视图(所以当它的解除动画发生时)。这似乎触发了一个错误,该错误将使警报视图不随应用程序旋转(以及稍后的其他一些小视觉问题)。我通过在操作表开始关闭后半秒显示警报视图来解决此问题,如下所示:

[alertView performSelector:@selector(show) withObject:nil afterDelay:0.5];

我认为iOS7问题的根源是苹果改变了UIAlertView外观机制。从现在开始,任何警报视图的显示都会在启动两个私有视图控制器后跟进

_UIModalItemAppViewController
_UIModalItemsPresentingViewController

换句话说,现在 UIAlertView 不是一个纯粹的视图 - 它是具有完整视图控制器生命周期的视图控制器的一些复杂集合的一部分。

最新更新