Запрет 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
но это'S никогда не звонил:
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-EDIT 3-я '
Я не уверен, насколько это актуально, но здесьs код для отображения предупреждения:
- (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];
}