2012-09-19 16 views
7

Configuré XCode 4.5 y el simulador iOS6 hace unos minutos. Mi aplicación es compatible con todas las orientaciones del iPhone, retrato de la parte superior y superior botón de inicio, ajardina a la izquierda y derecha.Orientación vertical del botón de inicio superior en el simulador iOS6 no funciona

Bueno, le puse eso al .plist como lo requiere iOS6 y también el viejo método shouldRotateTo ... todavía está allí devolviendo SÍ.

Pero en el simulador, la aplicación es no girando a la parte superior del botón de inicio del retrato.

¿Por qué? ¿Es esto por propósito? ¿Funcionaría correctamente en el dispositivo?

Gracias.

Respuesta

18

OK, Encontré la respuesta ahora mismo.

No es suficiente tener

- (BOOL)shouldAutorotate { 

    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations { 

    return UIInterfaceOrientationMaskAll; 
} 

en su ViewController si se empuja en una UINavigationViewController. El UINavigationViewController también tiene que tener esos métodos. Preferiblemente, debe hacer esto teniendo una Categoría pequeña en UINavigationViewController.

Esta es mi UINavigationController-Rotation.h:

@interface UINavigationController (Rotation) 
@end 

y mi UINavigationController-Rotation.m:

#import "UINavigationController-Rotation.h" 

@implementation UINavigationController (Rotation) 

#pragma From UINavigationController 

- (BOOL)shouldAutorotate { 

    BOOL result = self.topViewController.shouldAutorotate; 

    return result; 
} 

- (NSUInteger)supportedInterfaceOrientations { 

    NSUInteger result = self.topViewController.supportedInterfaceOrientations; 

    return result; 
} 

#pragma - 

@end 

Gracias por ayudarme!

+0

Gracias por compartir la respuesta .. –

1

Creo que su viewControllers devolverá el valor predeterminado, que está todo patas arriba. Debe implementar:

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

Para todas las viewControllers que desea admitir todas las orientaciones.

+0

No funciona.También estableció todas las orientaciones de interfaz en el plist, devolvió SÍ desde ViewController's - (BOOL) shouldAutorotate y ... MaskAll desde AppDelegate's - (NSUInteger) aplicación: (UIApplication *) application supportedInterfaceOrientationsForWindow: (UIWindow *) ventana. – Christoph

+0

Funciona como se esperaba en el simulador de iPad. Posiblemente un error en las versiones de iPhone? – Christoph

+0

Tendré que leer más la nueva documentación. Mi expectativa en este momento es que establecerlo en el archivo .plist y regresar la máscaraTodo en la vista los controladores deberían hacerlo. Recuerdo mencionar que también regresé de la aplicación Delegado. Esa puede ser la pieza que falta. –

2

El comportamiento predeterminado para iOS6 en iPhone no es la orientación hacia arriba.

from UIViewController Class Reference: The default values for a view controller’s supported interface orientations is set to UIInterfaceOrientationMaskAll for the iPad idiom and UIInterfaceOrientationMaskAllButUpsideDown for the iPhone idiom.

Puede ver este comportamiento también en Safari o Mapas.

Intenté anular esto con UIInterfaceOrientationMaskAll, como dijo Dean, pero sin ningún efecto. Decidí no usar el modo al revés, ya que es una especie de guía de interfaz de usuario que me gusta seguir y no confundir a los usuarios.

+0

No tengo prisa y realmente quiero apoyo al revés debido a la ubicación del micrófono en el iPhone 3GS-4S. – Christoph

0

En el caso de cualquier otra persona que todavía está teniendo problemas incluso después de seguir la respuesta de Christoh:

acabo notado la plist proyectos tiene entradas separadas para iPad y iPhone (Orientaciones admitidas interfaz (iPad) y Orientaciones de interfaz soportado (iPhone))

Espero que ayude.

Cuestiones relacionadas