【问题标题】:rotation problems when a UIAlertView is showing in iOS 7在 iOS 7 中显示 UIAlertView 时出现旋转问题
【发布时间】:2013-11-08 02:13:53
【问题描述】:

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

【问题讨论】:

  • 以下方法都不适合我,虽然我还没有在 7.1 中重新测试

标签: ios7 uialertview


【解决方案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 不是一个纯粹的视图 - 它是一些复杂的视图控制器集合的一部分,具有完整的视图控制器生命周期。

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多