Evita que AlertView gire automáticamente
La página de inicio de mi aplicación está configurada pararetrato Sólo con este pequeño código:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait ;
}
Cuando la aplicación lanza unUIAlertView
aparece para la entrada de nombre de usuario y contraseña. El método para mostrarlo se llama desdeviewWillAppear
.
Esto funcionó bien paraios 6 pero desdeios 7, si cambio el dispositivo a horizontal, la vista principal permanece en vertical, pero la vista de alerta y el teclado giran a horizontal. Otra peculiaridad extraña es que cuando vuelvo a cambiar a vertical, solo el teclado vuelve a cambiar (en forma truncada), dejando la alerta congelada en modo horizontal:
¿Alguien puede decirme cómo prevenir esto?
-EDITAR-
El código de autorotate se llama en una categoría separada:
@implementation UINavigationController (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) return NO;
else return YES;
}
@fin
-EDIT 2-
También he intentado crear una categoría enUIAlertView
pero nunca se llama
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-EDIT 3-
No estoy seguro de cuán relevante es esto, pero aquí está el código para mostrar la alerta:
- (void)alertWithMessage:(NSString *)theMessage
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login"
message:theMessage
delegate:self
cancelButtonTitle:@"Login"
otherButtonTitles: nil];
[alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
UITextField *nameField = [alert textFieldAtIndex:0];
[alert show];
}