iphone xcode ipad uiviewcontroller screen-orientation

iphone - shouldAutorotateToInterfaceOrientación no funciona



xcode ipad (5)

¿Para qué iOS estás construyendo? Fue desaprobado en iOS 6.0. (En su lugar, debe anular los métodos SupportInterfaceOrientations y preferredInterfaceOrientationForPresentation).

También puedes llamar a shouldAutorotate en la clase UIViewController:

https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/shouldAutorotate

Asegúrese de haber revisado las Orientaciones de interfaz admitidas en la pestaña "Resumen" de la configuración del proyecto (seleccione el nombre del proyecto en el ''Navegador de proyectos'' en la parte superior).

Si no ha seleccionado las orientaciones que desea usar aquí, entonces el simulador / iphone no permitirá que la pantalla cambie de orientación.

He estado escribiendo mi aplicación Universal en modo vertical, y ahora, después de unos 15 archivos de nib, muchos y muchos viewCotnrollers, me gustaría implementar la Orientación a la Interfaz de AutorotateTo y diseñar algunas pantallas en modo Horizontal.

añadiendo:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; }

A TODOS mis viewControllers, no hace el trabajo.

Durante la depuración, veo que se llama a este método, ¡pero simplemente no funciona! no en el simulador, no en el dispositivo, no en Iphone, no en Ipad!

He buscado algunas respuestas en el foro y he visto algunos consejos para usar:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ); }

Tampoco funcionó,

añadiendo:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

y

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

a mi viewDidLoad y viewDidUnload respectivamente tampoco funcionaron.

Estoy perdido .. Cualquier ayuda servirá!

solo una información más ... todas mis vistas son de tipo UIControl, ya que necesitaba el TuchUpInside para funcionar.

Aprecia tu ayuda.


... y por último, pero no menos importante, asegúrese de que no haya activado la configuración "Vertical Orientación bloqueada" en su dispositivo de prueba (por supuesto, no se aplica al simulador), esto deshabilitará la rotación en cualquier aplicación sin importar lo que shouldAutorotateToInterfaceOrientation devoluciones.


Asegúrese de que todas las vistas de sus padres tengan autoresizesSubviews = YES. Es posible que deba hacer esto en código si no ha configurado resortes y puntales en IB para todas sus vistas.

Citando la Guía del Usuario del Constructor de Interfaz:

Importante: en un archivo de plumilla Cocoa, si no configura ningún resorte o puntal para su vista en Interface Builder pero luego usa el método setAutoresizingMask: para agregar el comportamiento de autoajuste en el tiempo de ejecución, es posible que su vista aún no muestre el comportamiento correcto de tamaño automático. La razón es que Interface Builder desactiva el cambio de tamaño de los hijos de una vista de padres por completo si esos niños no tienen resortes y puntales establecidos. Para volver a habilitar el comportamiento de autoajuste, debe pasar SÍ al método setAutoresizesSubviews: de la vista principal. Al hacer eso, las vistas del niño deberían auto-dimensionarse correctamente.

Un par de cosas más a tener en cuenta:

  1. Un UINavigationController solo se activará automáticamente si su controlador de vista raíz también está configurado para autorotación.

  2. Un UITabBarController solo se activará automáticamente si todos sus controladores de vista están configurados para que se ejecuten automáticamente.


Tuve este problema pero funcionó en iOS6 pero no en iOS5. Resulta que tenía una vista en mi guión gráfico que todavía no había hecho una clase de controlador de vista.


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { UIInterfaceOrientation des=self.interfaceOrientation; if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //iPad { if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown)//ipad-portairait { } else//ipad -landscape { } } else//iphone { UIInterfaceOrientation des=self.interfaceOrientation; if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown) //iphone portrait { } else //iphone -landscape { } } return YES; }