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

如果要创建一个自定义键盘为您的应用程序本身,那么它应该是可控的。

理想情况下,定向从最后heirarchial或该应用的当前可见视图控制器继承。

但是,如果你正在创建一个第三方键盘应用程序,然后自定义键盘是覆盖在其他应用程序类应用与在那里为导向还是从应用程序,它是在keywindow目前继承。我认为自定义键盘不能局限于特定的方向,以便用户在使用该自定义键盘使用所有应用程序时感到方便。

0

能否请您尝试viewDidAppear

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

我曾尝试过,但它不适用于自定义键盘视图控制器 – Poles