Клавиша KEEP включена, когда UIAlertcontroller представлен в Swift?

При появлении оповещения клавиатура отклоняется. Я смотрел везде, но не нашел решений, чтобы держать клавиатуру видимой. Когда появляется предупреждение, текстовое поле, похоже, автоматически отменяет первый ответчик, поскольку оповещение представляется в виде модально. Как можно сохранить клавиатуру за этим предупреждением, что означает, что текстовое поле все еще редактируется, даже если взаимодействие не будет возможным?

Ответы

Ответ 1

Это решение работает для меня:

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

edit by @galambalazs: причина, по которой она работает, заключается в следующем:

Вы можете захватить окно с самым высоким уровнем окна и представить свой View Controller внутри этого окна (сделав его верхним контроллером просмотра в верхнем окне).

UIApplication.sharedApplication(). windows
Окна в массиве упорядочены сверху вниз по уровню окна,
таким образом, последнее окно в массиве находится поверх всех остальных окон приложения.

Также вы можете установить tintColor этого окна, чтобы он соответствовал вашим приложениям global tintColor.

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

Ответ 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)
  }