当UIAlertcontroller在Swift中出现时,KEEP键盘是否打开?

时间:2015-02-17 15:16:29

标签: ios swift keyboard uialertcontroller presentviewcontroller

当弹出警报时,键盘将被解除。我到处寻找,但没有找到保持键盘可见的解决方案。当提示警报时,文本字段似乎会自动重新响应第一响应者,因为警报是以模态方式呈现的。如何将键盘保持在此警报之后,这意味着即使没有可能的交互,文本字段仍在编辑?

2 个答案:

答案 0 :(得分:26)

此解决方案适用于我:

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

由@galambalazs编辑:它起作用的原因是因为:

您可以使用当前最高窗口级别获取窗口,并在 Window 中显示 View Controller (使其成为顶级 View Controller 在顶部窗口)。

  

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

此外,您可能需要设置该窗口的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;

答案 1 :(得分:2)

  

对于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)
  }