Tengo dos UIViewControllers, "A" y "B", donde "A" anula el shouldAutorotateToInterfaceOrientation SÍ para volver a UIInterfaceOrientationPortrait, y "B" se vuelve positivo para todas las orientaciones. En mi ejemplo, "A" es el controlador de vista de navegación raíz, y luego uso pushViewController para "B". Después de eso, giro el dispositivo en horizontal, lo que autorrota con éxito "B", luego hago clic en "B" (botón de retroceso o mediante popViewController) para volver a "A".popViewController no autorotate nuevo a la orientación permitido
Al apuntar a iPhone OS 3.1.3, "A" vuelve a la orientación vertical como se esperaba. Al apuntar a iPhone OS 3.2, tengo dos efectos secundarios:
- "A" aparece en horizontal.
- La barra de navegación no se actualiza aunque ahora se muestre "A". La barra de navegación todavía muestra los elementos para "B". Solo después de intentar retroceder/pop una vez más, la barra de navegación se animará para mostrar los elementos de "A". Si, en cambio, intento presionar "B" nuevamente y retroceder, tengo que mostrar dos veces antes de que la barra de navegación se active para mostrar los elementos de "A". Durante estos "pops intermedios", la vista de "A" permanece visualizada.
Durante la investigación de este tema, he visto otras respuestas que sugieren la realización de la rotación manualmente ([UIDevice setOrientation] oa través de un tranformation), sin embargo esto no ayuda a entender cuál es el problema, sobre todo por lo que se comporta de manera diferente entre el dos sistemas operativos.
Así que mi pregunta es: ¿deben todos mis UIViewControllers en la pila UINavigationController soportar exactamente las mismas orientaciones en el futuro? Y si no, ¿hay algo que deba hacer para que se comporte como lo hizo con OS 3.1.3?
Este problema también ocurre en iPhone OS 4.0. – iamj4de
¿Este comportamiento ocurre tanto en el dispositivo como en el simulador? Tuve un problema similar que solo sucedió en el simulador debido a errores del simulador. – MrHen