UIAlertcontroller在Swift中显示时保持键盘是否打开?

当警报popup时,键盘被解除。 我到处寻找,但没有find解决scheme,保持键盘可见。 当提示警报时,文本框似乎自动退出第一响应者,因为警报以模态方式呈现。 如何将键盘保持在这个警报的位置,这意味着即使不可能进行交互,文本框仍然在编辑?

这个解决scheme适用于我:

let rootViewController: UIViewController = UIApplication.sharedApplication().windows.lastObject.rootViewController!! rootViewController.presentViewController(alert, animated: true, completion: nil) 

编辑@ galambalazs:它的工作原因是因为:

您可以抓取具有当前最高窗口级别的窗口,并在该窗口中显示您的视图控制器 (使其成为顶部窗口中的顶部视图控制器 )。

UIApplication.sharedApplication()。窗口
数组中的窗口按照窗口级别从后到前sorting;
因此,数组中的最后一个窗口位于所有其他应用程序窗口之上。

你也可能要设置该窗口的tintColor,以便它匹配你的应用程序全局tintColor。

 UIWindow *topWindow = [UIApplication sharedApplication].windows.lastObject; // we inherit the main window's tintColor because topWindow may not have the same topWindow.tintColor = [UIApplication sharedApplication].delegate.window.tintColor; 

对于Swift 3和iOS11

 if let alertWindow = UIApplication.shared.windows.last, alertWindow.windowLevel == 10000001.0 // If keyboard is open { // Make sure keyboard is open alertWindow.rootViewController?.present(alertController, animated: true, completion: nil) } else { viewController?.present(alertController, animated: true, completion: nil) }