Pregunta

Estoy strugging con conseguir una aplicación de iPhone que requiere casi todos empuje o pop en el controlador de la pila de navegación a la orientación cambio.

Básicamente la primera vista es retrato, paisaje el segundo al tercer retrato (Sí sé que esto es menos que ideal, pero eso es el diseño y tengo que ponerlo en práctica).

He pasado por varios consejos aquí ....
¿Cómo puedo detectar una rotación en el iPhone sin el dispositivo autorotating?
orientación vertical de la fuerza en empujar nueva vista a UINavigationViewController < br> ¿Hay alguna manera documentado para definir la orientación iPhone
Pero sin éxito.

Configuración de enlace 3.1.2 contra mi lectura de los artículos vinculados anteriores parece indicar que si mi vista vertical empuja una vista con

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
A continuación, a continuación, ese punto de vista debería aparecer coloque en horizontal. Lo que pasa es que aparece en su forma retrato "roto", a continuación, gira correctamente como se enciende el dispositivo.

Si hago estallar la parte posterior del controlador a la vista vertical (que tiene una shouldAutoRotate apropiada ...) entonces que permanece en la vista horizontal roto hasta que el dispositivo se devuelve a la orientación vertical.

También he intentado eliminar todos los mensajes shouldautorotate, y en lugar de forzar la rotación mediante la transformación de la vista. Este tipo de obras, y he descubierto que al mover la barra de estado (que es en realidad oculta en mi solicitud) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; el teclado aparecerá con la orientación correcta cuando se desee.

El problema con este enfoque es que la barra de estado transformar es raro y feo cuando usted no tiene una barra de estado -. Una sombra se cierne sobre la página con cada cambio

Así. Qué me estoy perdiendo.

1) ¿Me equivoco al pensar que en 3.1.2 (o posiblemente antes) shouldAutorotateToInterfaceOrientation debe proporcionar la orientación deseada simplemente empujando los controladores?

2) ¿Hay otra manera de conseguir los teclados a aparecer en la orientación correcta.

3) son las API no documentada llama el camino a seguir (por favor, no!)

¿Fue útil?

Solución

No use [UIViewController shouldAutorotateToInterfaceOrientation:] para desencadenar un cambio de orientación; Es sólo existe para permitir que el sistema de conocimientos, si se permite la rotación automática. Aún debe actualizarlo para especificar la orientación que ha permitido sin embargo.

Si desea cambiar la orientación cuando un punto de vista particular está mostrando, debe llamar a [UIApplication setStatusBarOrientation:animated:] dentro de su método de reemplazo [UIViewController viewWillAppear:] para cada uno de los controladores de vista que obligan a una orientación particular. Eso va a causar un cambio cuando miras se inserta en la pila y cuando se está fuera de él apareció. Asegúrate de que llamar super en su método de reemplazo.

Este es también el lugar adecuado para cambiar la vista de la barra de estado, si eso es algo que está haciendo.

scroll top