iOS8: Was passiert mit bewegten Ansichten während Tastaturübergängen?

8

Nach dem Wechsel zu iOS8 bekomme ich seltsames Verhalten, wenn ich während eines Tastaturübergangs Ansichten verschiebe. Kann mir jemand erklären, was vor sich geht?

Hier ist ein minimales Beispiel, um das Problem zu demonstrieren. Ich habe eine einfache Ansicht mit einem UITextField und einem UIButton . Die Funktion nudgeUp verschiebt das Textfeld und die Schaltfläche um 10 Punkte. Es wird entweder vom buttonPressed Callback oder vom keyboardWillShow Callback ausgelöst.

Wenn ich auf die Schaltfläche tippe, funktioniert der Code wie erwartet: buttonPressed ruft nudgeUp auf und die Schaltfläche und das Textfeld springen um 10 Punkte nach oben.

Wenn ich auf das Textfeld tippe, ruft keyboardWillShow nudgeUp auf, aber das Verhalten ist sehr unterschiedlich. Die Schaltfläche und das Textfeld springen sofort um <10> nach unten und dann wieder zurück in ihre ursprüngliche Position, wenn sich die Tastatur selbst zeigt.

Warum passiert das? Wie kann ich die Steuerung von Animationen während der Tastaturpräsentation in iOS8 wieder erreichen?

%Vor%     
Pitarou 30.09.2014, 03:28
quelle

3 Antworten

8

Es ist AutoLayout. Etwas hat sich in iOS8 geändert und du kannst Frame- oder Mittelpunkte nicht mehr ändern, wenn du AutoLayout aktiviert hast. Sie müssen einen Auslass Ihrer Einschränkung (vertikaler Raum) erstellen und ihn entsprechend aktualisieren, anstatt die Rahmenposition zu ändern. Constraints sind wie jede andere UI-Steuerung und können eine Steckdose haben. Constraint Change kann animiert werden.

Beispiel:

%Vor%     
Haris 15.10.2014, 22:56
quelle
0

Sie sollten UIKeyboardDidShowNotification verwenden (Sie verwenden will version) und alles funktioniert wie erwartet:

%Vor%

Die Erklärung ist, dass Sie mit UIKeyboardWillShowNotification die Frames zu früh ändern. Nach Ihren Änderungen wird das System alles neu ausgeben, um die Tastatur aufzunehmen und Ihre Änderungen werden keine Wirkung haben.

Ich empfehle Ihnen auch, zum automatischen Layout zu wechseln und Frames zu vergessen.

    
djromero 06.10.2014 12:17
quelle
0

Versuchen Sie, mit UIKeyboardWillShowNotification userInfo den Rahmen der Tastatur anzugeben. Dann verschieben Sie die Bildschirmelemente basierend darauf.

    
CaptainCOOLGUY 08.10.2014 07:33
quelle

Tags und Links