Il mio rootViewController è un UITabbarController
e contiene UINavigationController
s.Perché la barra di stato ruota e la vista rimane ritratto
Per limitare la rotazione, poiché iOS6, in alcune ma non tutte le visualizzazioni, ho sottoposto a sottoclassi entrambi questi controller per rispettare la risposta shouldAutorotate della loro vista superiore o visibile.
Tutto questo funziona perfettamente ... il più delle volte.
In un caso, a partire da una vista (UITableviewController) che non consente la rotazione.
Spingo una vista che autorizza la rotazione, ruota in orizzontale e poi torna in verticale.
Poi, quando apro la vista, tutto appare bene.
Ma ora, se si ruota il dispositivo, la barra di stato ruota da sola, lasciando uno spazio vuoto nella parte superiore e coprendo una parte del lato sinistro della vista corrente. La vista corrente non ruota (come non dovrebbe). Solo la barra di stato ruota, avanti e indietro. La vista rimane reattiva, riceve tocchi e funziona normalmente, non ridimensiona o risponde alla rotazione in alcun modo (come non dovrebbe).
Questo comportamento continua fino a quando non uccido e riavvio l'app. Quando succede, non ho trovato altro modo per farlo smettere. Al riavvio tutto funziona di nuovo correttamente e funzionerà correttamente per una durata indeterminata. Posso sedermi lì spingendo, scoppiando, ruotando avanti e indietro sul mio cuore senza problemi.
Non sono mai stato in grado di ricreare questo nel simulatore.
Succede senza motivo apparente, non posso farlo accadere. Direi l'85% delle volte che funziona correttamente. Pensavo di averlo corretto molte volte quando non si verificava per giorni o addirittura settimane. Poi, di punto in bianco, succede di nuovo.
Non riesco a trovare un post in nessun forum che descriva questo comportamento, quindi non trovo nemmeno un punto di partenza per il debug. Come potrebbe oscillare la barra di stato da cima a parte e la vista non viene ridimensionata o ruotata o non risponde in alcun modo. Se sapessi come farlo accadere, avrei un punto di partenza.
Il problema riguarda l'orientamento del dispositivo (FaceUp, faceDown e orientamento sconosciuto) che non è possibile impostare nel simulatore. Ma sul dispositivo è possibile ottenere questo orientamento. Stampa l'orientamento del dispositivo e, quindi, puoi provare a eseguire il debug. – Bharath