Po pojawieniu się alarmu klawiatura zostaje odrzucona. Rozglądałem się wszędzie, ale nie znalazłem rozwiązań, aby klawiatura była widoczna. Po wyświetleniu alertu wydaje się, że pole tekstowe automatycznie rezygnuje z pierwszej odpowiedzi, ponieważ alarm jest prezentowany modalnie. W jaki sposób można utrzymać klawiaturę za tym alarmem, co oznacza, że pole tekstowe wciąż jest edytowane, nawet jeśli nie będzie możliwa interakcja?ZACHOWAĆ klawiaturę, gdy w Swift jest wyświetlany kontroler UIAlert?
13
A
Odpowiedz
21
Rozwiązanie to działa na mnie:
let rootViewController: UIViewController =
UIApplication.sharedApplication().windows.lastObject.rootViewController!!
rootViewController.presentViewController(alert, animated: true, completion: nil)
edit przez @galambalazs: Powodem jest to działa, ponieważ:
Można chwycić okno z aktualnym najwyższym poziomie i okiennej Przedstaw swój kontroler View wewnątrz tego Okno (co czyni go najlepszym kontrolerem View w górnej części Okno).
UIApplication.sharedApplication().windows
okien w tablicy są uporządkowane od tyłu do przodu przez poziom okiennej;
tym samym ostatnie okno w tablicy znajduje się na górze wszystkich innych okien aplikacji.
Również może chcesz ustawić tintColor tego okna tak, że pasuje aplikacje globalne 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;
0
Dla Swift 3 i 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)
}
Wygląda na to jest za pomocą okna pasek stanu jest, by przedstawić powiadomienie kontroler, prawda? – ninjudd
Właściwie to się myliłem. Drugie okno w 'UIAppplication.sharedApplication(). Windows' jest UITextEffectsWindow. – ninjudd
Po dalszych badaniach odkryłem, że UITextEffectsWindow jest tam, gdzie znajduje się widok klawiatury (lub UIViewController inputAccessoryView). To drugie okno będzie istniało tylko wtedy, gdy wyświetlona jest klawiatura. http://www.fantageek.com/1317/uiwindow-in-ios/ – ninjudd