2014-11-06 4 views
7

stelle ich UIAlertController Aktion Blatt aus meinem UIViewController:Wie wird das UIAlertController-Aktionsblatt angezeigt, während die Tastatur aktiv ist?

UIAlertController sheet = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; 
[self presentViewController:sheet animated:YES completion:nil]; 

Diese zum größten Teil gut funktioniert. Außer wenn ich eine Tastatur habe, erscheint das Blatt hinter der Tastatur. Ist das erwartetes Verhalten? Gibt es einen anderen Parameter, den ich angeben oder von woanders präsentieren muss?

+0

Mögliche Duplikate von [KEEP Tastatur ON, wenn UIAlertcontroller in Swift vorgestellt wird?] (Http://stackoverflow.com/questions/28564710/keep-keyboard-on-when-uialertcontroller- ist-präsentiert-in-swift) – galambalazs

Antwort

1

Es scheint zu erwartetes Verhalten zu sein, da die Dokumentation besagt, dass der Alert-Controller mit UIAlertControllerStyleActionSheet im aktuellen Kontext dargestellt wird. Wenn man bedenkt, dass sich die Tastatur in einem anderen Fenster befindet, hat sie keinen Kontext mit dem präsentierenden Ansichts-Controller.

Für die Zwecke meines Projekts entschied ich mich, auf das alte UIActionSheet zurückzugreifen, welches sich über die Tastatur kein Problem darstellt. Wenn es jedoch Vorschläge für UIAlertController gibt, können Sie auch gerne schreiben.

1

Problem ist nicht mehr reproduzierbar. Wahrscheinlich wurde es mit fixed behoben oder erfordert eine spezielle Hierarchie von View-Controllern. Wenn wir, dass dieses Problem annehmen kann immer noch unter bestimmten Umständen wiedergegeben werden kann ich vorschlagen:

  1. ausblenden Tastatur, wenn UIAlertController präsentiert von UIView.endEditing(true) Aufruf wo Blick auf UIViewConroller.view oder editierbare Ansicht gleich ist (zB UITextView)

  2. zeigen Tastatur nach UIAlertController entlassen, wenn Tastatur vorgestellt wurde, bevor sie von UIView.becomeFirstResponder() Aufruf wo Ansicht Blick auf den ersten Schritt bearbeitet

Wir können versuchen, diese Schritte allgemeiner durchzuführen, wie das Erstellen einer Erweiterung oder Unterklasse UIAlertController. Aber ich glaube, wir sollten die Dinge nicht komplizieren

+0

Last Minute Kopfgeld Panik? :-) Können Sie bitte näher auf das WIE eingehen? Wie kann man die Tastatur verstecken und noch interessanter, wie Tastatur mit dem gleichen Ersthelfer wie zuvor gezeigt wird? Für die Bounty müssen Sie Code zeigen und argumentieren, warum Sie die Lösung am besten geeignet ist. – fabb

+0

1. Es ist nicht schwer, die Tastatur zu verstecken: [[UIApplication sharedApplication] sendAction: @selector (resignFirstResponder) zu: nil from: nil forEvent: nil]; 2. Und aktuelle Ersthelfer finden: http://StackOverflow.com/A/1823360/3362694 Aber ich denke, es ist keine elegante Lösung. – perpetuous

+0

Es ist keine Bounty Panik :) Ich habe gerade diese Frage heute gesehen. Sicher werde ich einen Code zur Verfügung stellen – Silmaril