2012-09-13 46 views
8

Mi aplicación no se autorrota en el simulador GM de iOS 6 pero sí con la misma versión de iOS en el dispositivo. ¿Podría ser esto un error del simulador? La aplicación utiliza métodos de autorrotación obsoletos, pero funcionan bien en el dispositivo, lo que me hace preguntarme si las API del simulador son diferentes.La autorrotación de iOS 6 en el simulador varía desde el dispositivo iOS 6 actual

+0

¿Está ejecutando la aplicación compilada con iOS6 GM SDK? – rckoenes

+0

Esa es una buena pregunta, ¿cómo podría saberlo? Simplemente estoy ejecutando la aplicación en el dispositivo desde dentro de Xcode, en un dispositivo que ejecuta iOS 6, usando Xcode 4.5 que tiene el SDK ios6 y el simulador de iOS 6 – johnbakers

+0

que el iOS6 SDK. Me encontré con el mismo problema, haciendo una pequeña reescritura en mi base ViewController, pude agregar los nuevos métodos de rotación, y así arreglarlo en el simulador. Hemos probado antes de agregar el nuevo código de rotación y parecía funcionar bien en un dispositivo. – rckoenes

Respuesta

11

Esto es lo que he añadido para conseguir mi aplicación a trabajar de nuevo:

// Tell the system what we support 
- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 

// Tell the system It should autorotate 
- (BOOL) shouldAutorotate { 
    return YES; 
} 

// Tell the system which initial orientation we want to have 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 
+0

¿Dónde específicamente los agregaste? Si los agrego al delegado de mi aplicación o al controlador de mi vista, todavía no funciona. – Jackson

+1

Se supone que debe ir en el 'UIViewController', puede que tenga que modificarlo un poco. – rckoenes

+1

También asegúrese de que su Info.plist sea compatible con todas las rotaciones que necesite. – johnbakers

0

añadiendo lo siguiente no fue suficiente para hacer que funcione en el simulador:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 
- (BOOL) shouldAutorotate { 
    return YES; 
} 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

para hacer que funcione, yo también añadido el siguiente dentro de la función didFinishLaunchingWithOptions de la clase AppDelegate:

self.window.rootViewController = viewController; 

I st OPPED consiguiendo el error siguiente después de esta adición: se espera Las ventanas de aplicaciones para tener un controlador de vista raíz al final del inicio de la aplicación

15

Todavía debe trabajar con los métodos rotar en desuso, pero hay que añadir el siguiente a su método de didFinishLaunchingWithOptions::

self.window.rootViewController = yourRootViewController; 

Esto le dice al principal window lo controlador de vista para enviar las notificaciones a rotar. Esto es nuevo con iOS 6.0 SDK.

+0

¿No era nuevo en iOS5? Quiero decir, cambiaron eso en iOS5, ¿o estoy equivocado? –

+0

Era nuevo en iOS5, pero aparentemente podrías ignorar las advertencias de desaprobación. En iOS6 no puede ignorarlos ya que conduce al problema de rotación heredado descrito. He tenido exactamente el mismo problema anteriormente ... – Roger

0
- (BOOL)shouldAutorotate { 
    return NO; 
} 

y establece las rotaciones admitidas para el controlador de vista raíz en el archivo de aplicación simple a solo vertical.

Cuestiones relacionadas