Estoy luchando para obtener una aplicación de iPhone que requiera que cada impulso o pop en la pila de controlador Nav cambie de orientación.Forzando UIInterfaceOrientation changes on iPhone
Básicamente la primera vista es retrato, la segunda paisaje el tercer retrato otra vez (Sí, sé que esto es menos que ideal, pero ese es el diseño y tengo que implementarlo).
He pasado por varios consejos aquí ....
How do I detect a rotation on the iPhone without the device autorotating?
Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
pero sin éxito total.
Ajuste a enlazar con 3.1.2 mi lectura de los artículos vinculados anterior parece indicar que si mi vista vertical empuja una vista con
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
Luego entonces que la vista debe aparecer girado a horizontal. Lo que sucede es que aparece en su forma de retrato "roto", luego gira correctamente cuando se gira el dispositivo.
Si devuelvo el controlador a mi vista de retrato (que tiene una rotación automática adecuada ...), entonces permanece en la vista de paisaje rota hasta que el dispositivo vuelve a la orientación vertical.
También he intentado eliminar todos los mensajes de shouldautorotate, y en su lugar forzar la rotación mediante la transformación de la vista. Este tipo de trabajo funciona, y he descubierto que al mover la barra de estado (que está realmente oculta en mi aplicación) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
, el teclado aparecerá con la orientación correcta cuando se desee.
El problema con este enfoque es que la transformación de la barra de estado es extraña y fea cuando no tiene una barra de estado: una sombra se cierne sobre la página con cada cambio.
So. Qué me estoy perdiendo.
1) ¿Me equivoco al pensar que en 3.1.2 (o posiblemente antes) shouldAutorotateToInterfaceOrientation debería proporcionar la orientación deseada simplemente presionando los controladores?
2) ¿Hay otra forma de hacer que los teclados aparezcan en la orientación correcta?
3) son las API no documentada llama el camino a seguir (por favor no)
No estoy seguro de si hay una diferencia entre [UIApplication setStatusBarOreintation .... y [UIApplication sharedApplication] .statusBarOrientation ... Voy a probar, de lo contrario, eso es lo que he hecho, y estoy sufriendo de la sombra de la barra de estado dando vueltas.En la vista de paisaje, utilizo una transformación para mostrar inicialmente la vista en el paisaje. Si luego dejo una vista horizontal con shouldAutorotateToInterfaceOrientation, ¿no se volverá a activar? ¿Cómo anulo eso? – Andiih
Tenga en cuenta que este método ha quedado obsoleto en iOS 9. – fullofsquirrels