Запрет AlertView от автоматического поворота
Страница запуска моего приложения настроена напортрет только с этим небольшим количеством кода:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait ;
}
Когда приложение запускаетUIAlertView
появляется для ввода имени пользователя и пароля. Метод для его отображения вызывается изviewWillAppear
.
Это работало нормально дляiOS6 но с тех порIOS 7, если я переключаю устройство в альбомную ориентацию, основной вид остается в портретной ориентации, но вид предупреждения и клавиатура поворачиваются в альбомную ориентацию. Еще одна странная странность заключается в том, что когда я переключаюсь обратно в портретный режим, только клавиатура переключается обратно (в усеченном виде), оставляя предупреждение замороженным в ландшафтном режиме:
Может кто-нибудь сказать мне, как это предотвратить?
-РЕДАКТИРОВАТЬ-
Код автоповорота вызывается в отдельной категории:
@implementation UINavigationController (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) return NO;
else return YES;
}
@конец
-EDIT 2-
Я также пытался создать категорию наUIAlertView
но это никогда не называется
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-EDIT 3-
Я не уверен, насколько это актуально, но вот код для отображения предупреждения:
- (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];
}