6

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:

  1. "A" aparece en horizontal.
  2. 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?

+1

Este problema también ocurre en iPhone OS 4.0. – iamj4de

+0

¿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

Respuesta

1

Parece que los SO más nuevos requieren todos los UIViewControllers en la pila UINavigationController para admitir el mismo conjunto de orientaciones.

0

Tengo el mismo problema y encontré la respuesta en este enlace: UINavigationController navigation stack problems in landscape mode uno de mis controladores de vista no devolvió SÍ en shouldAutorotateToInterfaceOrientation.

+0

Gracias por su respuesta. En mi caso, tanto "A" como "B" devuelven valores para shouldAutorotateToInterfaceOrientation, y "A" solo devuelve YES para portrait, ya que es el único que admite. ¿Debo devolver SÍ para un controlador de vista del que no tengo conocimiento (ni A ni B)? – JoeGaggler

Cuestiones relacionadas