iOS 7中弹出UIAlertView时的旋转问题

9

在iOS7中,很少但有时候当我旋转我的应用程序时,只有UIAlertView和状态栏会旋转,但我的应用程序却没有旋转。有其他人经历过这种情况并找到了解决方法吗?


1
虽然我还没有在7.1中重新测试,但以下任何方法都对我无效。 - Mohamed Hafez
3个回答

15

我通过在应用程序委托中添加下一个方法来解决了这个问题:

- (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+的一个bug,因为它们在iOS 7中改变了UIALertView的层次结构。 - Peymankh
@user3404693 因为在iOS8中无法使用UIAlertView,所以请改用UIAlertController。根据我的经验,不能保证UIAlertView在iOS8上能正常工作。 - Catherine

4

我遇到了相反的问题。我的应用程序可以旋转,但警报视图不能旋转。我发现这是因为我在一个UIActionSheet被解除后立即显示警报视图(因此当解除动画正在进行时)。这似乎触发了一个错误,使得警报视图不随应用程序旋转(以及稍后的一些其他小的视觉问题)。我通过在操作表开始解除后半秒钟呈现警报视图来解决这个问题,就像这样:

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

我并没有展示 UIActionSheet,而是在 UIAlertView 显示时关闭了一个视图控制器,这解决了问题。 - john.k.doe
1
这就是我的应用程序中发生的事情! - cynistersix
1
修复了我的 bug。谢谢。这只在 iOS 7 上需要,对于我来说不需要在 iOS 8 或 iOS 6 上。 - cynistersix

0

我认为iOS7问题的根源在于苹果改变了UIAlertView的外观机制。 从现在开始,任何alertView的显示都是在初始化两个私有视图控制器之后进行的。

_UIModalItemAppViewController
_UIModalItemsPresentingViewController

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

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