Wenn die Warnung erscheint, wird die Tastatur geschlossen. Ich habe überall gesucht, aber keine Lösungen gefunden, um die Tastatur sichtbar zu halten. Wenn eine Warnung angezeigt wird, scheint das Textfeld den Ersthelfer automatisch zurückzuweisen, da die Warnung modal präsentiert wird. Wie ist es möglich, die Tastatur hinter dieser Warnung zu halten, was bedeutet, dass das Textfeld noch bearbeitet wird, auch wenn keine Interaktion möglich ist?Keep Tastatur eingeschaltet, wenn UIAlertcontroller in Swift dargestellt wird?
13
A
Antwort
21
Diese Lösung funktioniert für mich:
let rootViewController: UIViewController =
UIApplication.sharedApplication().windows.lastObject.rootViewController!!
rootViewController.presentViewController(alert, animated: true, completion: nil)
bearbeitet von @galambalazs: Der Grund, es funktioniert, weil:
Sie das Fenster mit dem aktuellen höchsten Fenster Ebene greifen und Präsentieren Sie Ihre View Controller in diesem Fenster (so dass es die Top View Controller in den oberen Fenster).
UIApplication.sharedApplication().windows
Die Fenster in der Anordnung werden von hinten nach vorne durch Fensterebene angeordnet;
Das letzte Fenster im Array befindet sich also über allen anderen App-Fenstern.
Vielleicht möchten Sie auch die TintColor dieses Fensters so einstellen, dass sie mit Ihrer globalen TintColor-App übereinstimmt.
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;
0
Für Swift 3 und 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)
}
Es sieht aus wie dies in der Statusleiste ist mit dem Fenster ist der Alarm-Controller zu präsentieren, nicht wahr? – ninjudd
Eigentlich habe ich mich geirrt. Das zweite Fenster in 'UIAppplication.sharedApplication(). Windows' ist ein UITextEffectsWindow. – ninjudd
Nach mehr Forschung entdeckte ich, dass UITextEffectsWindow ist wo die Tastaturansicht (oder UIViewController inputAccessoryView) befindet. Dieses zweite Fenster wird nur existieren, wenn die Tastatur angezeigt wurde. http://www.fantageek.com/1317/uiwindow-in-ios/ – ninjudd