ios ios6 screen-orientation

Orientación iOS6 sigue girando incluso cuando se le dice que no



screen-orientation (3)

Si no desea que la aplicación gire alguna vez, puede eliminar el paisaje de las orientaciones de su interfaz compatible en su info.plist y eso debería hacerlo.

De lo contrario, debe indicarle a su controlador de vista raíz que busque en sus hijos información de orientación.

-Brandon

Parece que tengo dificultades con mi aplicación iOS.

Su objetivo de despliegue es iOS5.0, sin embargo, estoy usando iOS 6.0 SDK.

En mi View Controller tengo:

-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationMaskPortrait; } -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return (toInterfaceOrientation == UIInterfaceOrientationPortrait); }

Esto funciona bien cuando se ejecuta en el simulador iOS5. La vista no girará hacia LandScape o boca abajo.

Sin embargo, en el simulador IOS6 (y en un dispositivo), continuará rotando.

Utilicé NSLog para comprobar que NSLog se llama y lo hace, dos veces, sin embargo, sigue girando hacia LandScape (derecha o izquierda)

¿Qué estoy haciendo mal?

También extendí el UINavigationController (My Root View Controller) para incluir esto:

@implementation UINavigationController (Rotation_IOS6) -(BOOL)shouldAutorotate { return [[self.viewControllers lastObject] shouldAutorotate]; } -(NSUInteger)supportedInterfaceOrientations { return [[self.viewControllers lastObject] supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; } @end

Pero aún no hay éxito.

Gracias.

Editar

Según la respuesta de Matt. También necesitaba extender el UITabBarController con una implementación similar a mi UINavigationController y funcionó.

Espero que esto ayude a alguien más.


El problema podría ser que tienes una interfaz de navegación. ¿Vos si? Si es así, debe crear una subclase UINavigationController y usar una instancia de esa subclase como su controlador de navegación. En esa subclase, aquí es donde implementa las supportedInterfaceOrientations interfaz supportedInterfaceOrientations . Lo mismo ocurre con cualquier controlador de vista padre (por ejemplo, UITabBarController).

La razón es que la forma de pensar de iOS 6 sobre la rotación es completamente diferente de iOS 5. Nada más que creas que sabes de iOS 5 se aplica más. En iOS 6 comenzamos en el nivel de la aplicación en sí y trabajamos hacia abajo por medio del delegado de la aplicación al controlador de vista raíz u otro controlador de vista de pantalla completa (por ejemplo, un controlador de vista presentado) y nos detenemos . Un padre ya no consulta a sus hijos.

Además, la aplicación en sí (a través del info.plist o del delegado de la aplicación) debe enumerar todas las orientaciones que alguna parte de la aplicación pueda asumir; los controladores de vista solo pueden solicitar un subconjunto de ellos.

Ver las notas de la versión:

http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html

Sin embargo, tenga en cuenta que esta oración es una mentira:

Para compatibilidad, los controladores de vista que todavía implementan el método shouldAutorotateToInterfaceOrientation: no obtienen los nuevos comportamientos de autorrotación

Por el contrario, en iOS 6 los métodos de autorrotación más antiguos se ignoran por completo; todos obtienen los nuevos comportamientos de autorrotación. No es "opt-in".


Verifique la configuración de su proyecto y la información.plíqueles tienen una prioridad más alta que el delegado de la aplicación. asegúrese de que solo se seleccionen las orientaciones que desea