Tastaturanimationsprobleme beim Aufrufen von becomeFirstResponder in einem Modal View Controller

Ich hatte einige Probleme mit dem Anrufen-becomeFirstResponder auf einenUITextField enthalten mit einem View-Controller, der modal dargestellt wird. Ich bezeichne diese Methode in den Modal View Controllern-viewDidLoad Methode, so dass die Tastatur sofort angezeigt wird. Was ich erwartet hatte, war, dass sowohl die Tastatur als auch der Controller für die modale Ansicht gleichzeitig vom unteren Bildschirmrand animiert werden. Ich beobachte jedoch Folgendes:

Zwischen dem Klicken auf die Schaltfläche, die das Symbol aufruft, liegt eine Verzögerung von ~ 0,2 Sekunden-presentModalViewController:animated: Methode auf dem übergeordneten Ansichtscontroller und wenn der untergeordnete Ansichtscontroller beginnt, modal zu animieren.Die Tastatur wird sofort ohne Animation dargestellt, sobald die Animation des Modal View Controllers beginnt.Sobald die Animation des Modal View Controllers abgeschlossen ist, scheint alles andere reibungslos zu funktionieren.Wenn Sie den Modal View-Controller schließen, wird er reibungslos außerhalb des Bildschirms animiert (zusammen mit der Tastatur, zufällig).Wenn Sie nach dem ersten Mal auf die Schaltfläche klicken, die den Controller für die modale Ansicht anzeigt, wird dasselbe Muster erzielt, mit der Ausnahme, dass keine Verzögerung von ~ 0,2 Sekunden auftritt.

Es ist, als würden die Animation der Tastatur und die Animation des Modal View Controllers gleichzeitig um eine untergeordnete Core Animation-Ressource konkurrieren, aber ich verstehe nicht, warum dies passieren sollte. Was diese Vermutung weiter zu untermauern scheint, ist, wenn ich das nicht frageUITextField Um der erste Antwortende zu werden (d. h. wenn ich die Tastatur nicht auffordere, sich zu präsentieren), gibt es absolut keine Verzögerung der Benutzeroberfläche, und der Controller für die modale Ansicht wird sofort animiert.

Interessanterweise, wenn ich so etwas mache[self.textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0001]; Dann erfolgt die Animation der Tastatur fast zeitgleich mit der Animation des Modal View Controllers. Es ist äußerst schwierig zu erkennen, dass nicht beide gleichzeitig animiert werden, wenn sie auf dem iPhone Simulator ausgeführt werden. Bei der Ausführung auf einem tatsächlichen Gerät fällt jedoch leicht auf, dass die Tastatur erst angezeigt wird, nachdem der Controller für die modale Ansicht angezeigt wurde. Es ist jedoch wichtig, dass keine Verzögerung der Benutzeroberfläche mehr auftritt.

Hat jemand etwas Ähnliches erlebt?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage