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];
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta