2013-10-11 9 views
6

Ich sehe ein seltsames Verhalten in iOS7, wo ich die UIKeyboardAppearanceDark Tastatur Aussehen in ViewDidLoad, aber die Tastatur erscheint zunächst in der Standard (hellgrau) Stil, und dann eine Sekunde später auf die dunkler Stil.iOS7 Verzögerung beim Anwenden von UIKeyboardAppearanceDark

Ich sehe dieses Verhalten in einem anderen UIViewController weiter, wenn ich die Tastaturdarstellung in einer XIB-Datei einstelle - die Ansicht wird geladen und blinkt schnell von hell nach dunkel, wenn die Ansicht erscheint.

Kann jemand einen Grund für dieses Verhalten vorschlagen, oder ist das ein Fehler in iOS7?

+0

Ich habe dies als Fehler bei Apple eingereicht und eine Demo-App erstellt, die das Problem zu 100% wiedergibt. Gespeichert in Radar. – esilver

+0

Eine konsistente Repro ist es, eine dunkle Tastatur erscheinen zu lassen, indem Sie einen UITextView First Responder machen, dann Ihre App in den Hintergrund stellen, indem Sie die Home-Taste drücken und dann Ihre App wiederherstellen. Nach der Wiederherstellung sehen Sie die Farben der Tastaturblitzfarbe, oder zumindest konnte ich eine Beispielanwendung vorbereiten, bei der dieses Verhalten zu 100% der Zeit aufgetreten ist. – esilver

+0

Ich kann das nicht mit den oben genannten Schritten reproduzieren, aber ich erlebe dies immer noch in 7.0.4, wenn die Tastatur zum ersten Mal angezeigt wird. Nach der ersten Anzeige bleibt die Tastatur dunkel, nachdem der Status oder der Hintergrund des ersten Responders geändert und die App neu gestartet wurde. – enjayem

Antwort

0

Legen Sie das Erscheinungsbild der Tastatur in viewWillAppear so fest, dass es dunkel ist, bevor die Ansicht geladen wird.

+0

Danke - im Falle der XIB-Datei, die dieses Verhalten zeigt, habe ich diese Option nicht. Darüber hinaus sollte das Festlegen in viewDidLoad ebenfalls ausreichend sein, da diese Methode vor der Anzeige auf dem Bildschirm ausgeführt wird. – esilver

+0

Vielleicht passiert die Änderung im Aussehen nicht auf dem Hauptfaden aus irgendeinem Grund? Wenn ja, könnten Sie versuchen, es in dispatch_async zu verpacken (dispatch_get_main_queue(),^{}); – JuJoDi

+0

mit Breakpoints und basierend auf meinen Erfahrungen mit iOS kann ich bestätigen, dass viewDidLoad immer im Hauptthread aufgerufen wird. – esilver

0

Sie können die Aussehen-Eigenschaft im Interface Builder für das betreffende UITextField auf Dunkel setzen.

Verwandte Themen