1

我正在创建一个自定义键盘,我不想支持横向模式。因此,如果用户将设备旋转到横向模式,则键盘必须仍处于纵向模式。我尝试了以下方法:

-(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

在这里,我得到旋转后的当前视图大小。但是如何停止旋转?任何帮助将不胜感激。

4

2 回答 2

1

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

理想情况下,方向是从应用程序的最后一个层次结构或当前可见视图控制器继承的。

但是,如果您正在创建第三方键盘应用程序,那么自定义键盘是一种覆盖在其他应用程序上的应用程序,因为方向仍然从当前位于键窗口中的应用程序继承。我认为自定义键盘不能仅限于特定方向,以便用户在使用所有应用程序与该自定义键盘时感到方便。

于 2016-07-26T08:54:40.020 回答
0

你能试试同样的吗viewDidAppear

-(void)viewDidAppear:(BOOL)animated{
   NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPotrait];
 [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
} 
于 2016-07-26T09:00:17.223 回答