Antes de iOS 8, utilizamos el siguiente código junto con compatiblesInterfaceOrientations y debeAutoRotate los métodos de delegado para forzar la orientación de la aplicación a cualquier orientación particular. Utilicé el fragmento de código a continuación para rotar mediante programación la aplicación a la orientación deseada. En primer lugar, estoy cambiando la orientación de la barra de estado. Y luego, simplemente presentar y descartar inmediatamente una vista modal gira la vista a la orientación deseada.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
Pero esto está fallando en iOS 8. Además, he visto algunas respuestas en el desbordamiento de pila donde la gente sugirió que siempre debemos evitar este enfoque desde iOS 8 en adelante.
Para ser más específico, mi aplicación es un tipo universal de aplicación. Hay tres controladores en total.
Controlador First View : debe admitir todas las orientaciones en iPad y solo retrato (botón de inicio hacia abajo) en iPhone.
Segundo controlador de vista : debe admitir solo el paisaje justo en todas las condiciones
Tercer controlador de vista : debe admitir solo el paisaje justo en todas las condiciones
Estamos utilizando el controlador de navegación para la navegación de la página. Desde el primer controlador de vista, en una acción de clic de botón, estamos empujando el segundo en la pila. Entonces, cuando llega el segundo controlador de vista, independientemente de la orientación del dispositivo, la aplicación debe bloquearse solo en el paisaje.
A continuación se muestra mi shouldAutorotate
y supportedInterfaceOrientations
métodos en el controlador de segunda y tercera vista.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
¿Existe alguna solución para esto o alguna otra forma mejor de bloquear un controlador de vista en una orientación particular para iOS 8. Por favor, ayuda!