2013-10-11 14 views
6

Sto vedendo uno strano comportamento in iOS7 in cui ho impostato l'aspetto della tastiera su UIKeyboardAppearanceDark in viewDidLoad, ma inizialmente la tastiera apparirà nello stile predefinito (grigio chiaro), quindi un secondo dopo passerò al stile oscuro.iOS7 ritardo nell'applicazione di UIKeyboardAppearanceDark

Vedo inoltre questo comportamento in un altro UIViewController quando imposto l'aspetto della tastiera in un file XIB: la vista viene caricata e lampeggia rapidamente da chiaro a scuro mentre appare la vista.

Qualcuno può suggerire un motivo per questo comportamento, o si tratta di un bug in iOS7?

+0

L'ho archiviato come un bug con Apple e ho creato un'app demo che ripropone il problema al 100%. Archiviato in Radar. – esilver

+0

Una riproduzione coerente consiste nel far apparire una tastiera scura rendendo un primo risponditore UITextView, quindi posiziona l'app in background premendo il pulsante Home, quindi ripristina la tua app. Verranno visualizzati i colori del flash della tastiera al momento del ripristino, o almeno sono riuscito a preparare un'app di esempio in cui questo comportamento si è verificato il 100% delle volte. – esilver

+0

Non riesco a riprodurre questo con i passaggi precedenti, ma lo avverto ancora in 7.0.4 quando viene visualizzata per la prima volta la tastiera. Dopo la visualizzazione iniziale, la tastiera rimane scura dopo aver attivato lo stato di FirstResponder o lo sfondo e il riavvio dell'app. – enjayem

risposta

0

Impostare l'aspetto della tastiera in viewWillAppear in modo che sia buio prima del caricamento della vista.

+0

Grazie - nel caso del file XIB che mostra questo comportamento non ho questa opzione. Inoltre, impostarlo in viewDidLoad dovrebbe essere sufficiente poiché questo metodo viene eseguito prima che la vista venga visualizzata sullo schermo. – esilver

+0

Forse il cambio di aspetto non sta avvenendo sul thread principale per qualche motivo? Se è così, puoi provare a metterlo in dispatch_async (dispatch_get_main_queue(),^{}); – JuJoDi

+0

utilizzando i punti di interruzione e in base alla mia esperienza con iOS, posso confermare che viewDidLoad viene sempre chiamato sul thread principale. – esilver

0

È possibile impostare la proprietà Aspetto su Scuro in Interface Builder per UITextField in questione.