Evitar que o AlertView rode automaticamente
A página de lançamento do meu aplicativo está definida pararetrato apenas com este pequeno código:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait ;
}
Quando o aplicativo inicia umUIAlertView
aparece para entrada de nome de usuário e senha. O método para exibi-lo é chamado deviewWillAppear
.
Isso funcionou bem paraiOS6 mas desdeiOS7, se eu alternar o dispositivo para paisagem, a visualização principal permanecerá no modo retrato, mas a visualização de alerta e o teclado girarão para a paisagem. Outra peculiaridade bizarra é que, quando eu volto ao retrato, apenas o teclado retorna (na forma truncada), deixando o alerta congelado no modo paisagem:
Alguém pode me dizer como evitar isso?
-EDITAR-
O código de autorotate é chamado em uma categoria separada:
@implementation UINavigationController (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) return NO;
else return YES;
}
@fim
-EDIT 2-
Eu também tentei criar uma categoria emUIAlertView
mas nunca é chamado:
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-EDIT 3-
Não tenho certeza de como isso é relevante, mas aqui está o código para mostrar o 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];
}