从iOS 8和新的UIAlertController开始,在以下情况中:
有没有办法检测到任何未被任何UIAlertAction按钮激活的解雇?
答案 0 :(得分:0)
为了避免新的UIViewController解雇您的UIAlertViewController,我的解决方案是: - 使用level = UIWindowALertLEvel +1创建新的UIWindow - 为该UIWindow添加空的rootViewController - 使UIWIndow成为一个keyWindow - 从rootViewController中显示alertController。
因此,这个警报控制器不会被另一个视图控制器解雇。
我的代码:
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)
}