1

从 iOS 8 和新的 UIAlertController 开始,在以下场景中:

  • 呈现了一个 UIAlertController。
  • 本地推送通知横幅显示在顶部,作为 UIWindow。
  • 用户点击横幅,然后导航到不同的 UIViewController 并且 UIAlertController 正在被 window.rootViewController 解除...

有没有办法检测任何 UIAlertAction 按钮都没有激活的这种解雇?

4

1 回答 1

0

为了避免你的 UIAlertViewController 被新的 UIViewController 解散,我的解决方案是: - 使用 level = UIWindowALertLEvel +1 创建新的 UIWindow - 为该 UIWindow 添加空的 rootViewController - 使 UIWIndow 成为 keyWindow - 从 rootViewController 显示 alertController。

所以,这个 alertcontroller 不会被另一个 viewcontroller 解散。

我的代码:

func showSimpleAlertOverWindow(title: String, msg: String, okButtonTitle : String, animated : Bool) {
        CLWrapper.logDebug("show message <\(msg)>")

        let _alertWindow = UIWindow(frame: UIScreen.mainScreen().bounds)
        _alertWindow.rootViewController = UIViewController()
        _alertWindow.windowLevel = UIWindowLevelAlert + 1
        _alertWindow.hidden = false

        let alert = UIAlertController(title: title ?? "", message: msg ?? "", preferredStyle: UIAlertControllerStyle.Alert)
        let okBtn = UIAlertAction(title: okButtonTitle ?? "", style: UIAlertActionStyle.Default) { (alertAction) -> Void in
            _alertWindow.resignKeyWindow()
            _alertWindow.hidden = true

        }

        alert.addAction(okBtn)

        _alertWindow.makeKeyWindow()
        _alertWindow.rootViewController!.presentViewController(alert, animated: animated, completion: nil)

    }
于 2015-12-15T21:45:23.863 回答