1

Я создаю пользовательскую клавиатуру, и я не хочу поддерживать ландшафтный режим. Таким образом, если пользователь поворачивает устройство в альбомный режим, клавиатура все равно должна находиться в портретном режиме. Я попытался следующие методы:Отключить вращение пользовательской клавиатуры в ios

-(BOOL)shouldAutorotate { 
    return NO; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

и

-(void)viewDidLoad{ 
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPotrait]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
} 

Но ни один из методов не работает. Единственный способ срабатывает при вращении устройства:

-(void)viewWillTransitionToSize:(CGSize)size 
     withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

Здесь я получаю текущий размер вида после поворота. Но как остановить поворот? Любая помощь будет оценена по достоинству.

+0

Это то, что вы ищете: http://stackoverflow.com/questions/6941849/disable-orientation-for-keyboard-in-iphone – Ariel

+0

@Ariel: Я уже пробовал это. Не работает. – Poles

+0

Я также создаю пользовательскую клавиатуру и использую автоматические макеты для сохранения портретного и ландшафтного режима. У меня такой же случай, как у вас. Вы используете автоматические макеты или отключили автомасштабирование? – Ariel

ответ

1

Если вы создаете собственную клавиатуру для своего приложения, то она должна быть управляемой.

В идеале ориентация унаследована от последнего иерархического или текущего видного вида контроллера.

Но если вы создаете стороннее приложение для клавиатуры, то пользовательская клавиатура выглядит как приложение, наложенное на другое приложение, где ориентация по-прежнему унаследована от приложения, которое находится в ключевом окне в настоящее время. Я думаю, что пользовательская клавиатура не может быть ограничена определенной ориентацией, чтобы пользователь чувствовал себя уверенно в использовании всех приложений с этой пользовательской клавиатурой.

0

Не могли бы вы попробовать то же самое на viewDidAppear

-(void)viewDidAppear:(BOOL)animated{ 
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPotrait]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
} 
+0

Я пробовал, но не работал для настраиваемого контроллера просмотра клавиатуры – Poles