vistas de alertas en el retrato, el iPhone en el paisaje, y no se puede girar a cualquier cosa menos paisaje “otro” (180 grados)

StackOverflow https://stackoverflow.com/questions/3816566

Pregunta

Actualización: Resuelto. Ver solución en la parte inferior.

En mi aplicación para iPad que apoya todas las orientaciones, si la aplicación se carga en el paisaje, ocurren cosas extrañas:

  1. vistas de alerta aparecen en el retrato, aunque el resto es en el paisaje
  2. Al girar el iPad de horizontal a vertical no provoca una rotación (ni desencadenar cualquiera de los métodos de estilo shouldAutorotate).
  3. Rotación de los iPad 180 grados (a "de otro paisaje") hace la rotación de disparo, y después de esto, el IPAD se comporta como normal (es decir, gira correctamente a vertical y horizontal cuando se gira).
vista de pantalla

Alerta a continuación. Raro raro. Alguna idea de por qué esto esta pasando? Esto sólo ocurre cuando se carga en el paisaje - carga en el retrato y luego girando a horizontal funciona bien. Landtrait!

Solución: Este problema se produjo porque yo estaba añadiendo un UIViewController (modal) en la parte superior del controlador principal vista tan pronto como la aplicación de carga acabada (más específicamente, en el método viewDidAppear: de la aplicación).

iOS envía un número de llamadas (4) shouldAutorotateToInterfaceOrientation: a la corriente controlador / vista principal después de las cosas se han puesto en marcha, de averiguar que son compatibles actualmente orientaciones. Cuando añadí otro VC tan pronto, esto ocurrió en medio de las llamadas antes mencionadas. Así, sólo me dieron una o dos llamadas (para "retrato", ya que se inicia con el retrato).

El controlador principal punto de vista fue luego a la izquierda con un soporte por defecto de "NO" para las orientaciones del paisaje, pero el controlador de vista recién agregado (que también se preguntó acerca de las orientaciones) ahora responde felizmente sí.

Si hubiera eliminado la otra VC (que es en el paisaje), me habría dado cuenta de que mi controlador principal vista era atascado en el retrato. Así que tenía una vista vertical, en cuya parte superior había una vista horizontal. Las alertas y tal hicieron caso la orientación de los antiguos por lo tanto los resultados, desastrosas anteriormente.

Además, si trataba de rotación para retrato, que no podía, porque el principal controlador de vista ya estaba en el retrato. Giratoria con el paisaje también era imposible porque el otro controlador de vista ya está en el paisaje. Sólo cuando hice el "paisaje sino que otro" rotación, hizo dos controladores de vista están de acuerdo en que se requiere la rotación, y por lo tanto el dispositivo gira.

La solución en mi caso era poner simplemente la creación del otro controlador a un ligero retraso. utilizando performSelector:withObject:afterDelay. - 0 parecía funcionar pero a ponerlo en 1 para estar seguro. Se ve un poco raro, con el vc más importante que aparezca y luego el otro vc, pero es mejor que el anterior.

¿Fue útil?

Solución

producido este problema porque yo estaba añadiendo un UIViewController (modal) en la parte superior del controlador principal vista tan pronto como la aplicación de carga acabada (más específicamente, en la aplicación de viewDidAppear: método).

Ver por encima de correos para obtener más información sobre la solución.

Otros consejos

Uso UIAlertController en lugar de UIAlertview. Tengo el mismo problema y su ahora fijo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top