1

С прошивкой 8 и новый UIAlertController, в сценарии, где:Detect когда UIAlertController будет увольняют другой UIViewController

  • UIAlertController представлена.
  • Локальный баннер уведомления о начале сообщения отображается сверху, как UIWindow.
  • Пользователь вводит на баннере, а затем переходите к другой UIViewController и UIAlertController в настоящее время освобождается от window.rootViewController ...

Есть ли способ, чтобы обнаружить такое увольнение, не активируется с помощью любого из кнопки UIAlertAction?

ответ

0

Чтобы избежать этого ваш UIAlertViewController освобождается от нового UIViewController, мое решение: - Создать новый UIWindow с уровнем = UIWindowALertLEvel +1 - добавить пустую RootViewController для этого UIWindow - Убедитесь, что UIWindow keyWindow - показать alertController из rootViewController.

Итак, этот диспетчер предупреждений не будет отклонен другим диспетчером представлений.

Мой код:

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) 

    }