【问题标题】:Disable rotation of custom keyboard in ios在ios中禁用自定义键盘的旋转
【发布时间】:2016-11-29 19:00:00
【问题描述】:

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

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

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

【问题讨论】:

  • 这是你要找的东西吗:stackoverflow.com/questions/6941849/…
  • @Ariel :我已经尝试过了。不工作。
  • 我也在制作自定义键盘,并使用自动布局来保持纵向和横向模式。我和你的情况一样。您现在是使用自动布局还是禁用自动布局?
  • 我正在使用自动布局,但不支持横向模式。我希望纵向模式的同一个键盘也应该为横向模式打开。
  • 我的键盘也使用自动布局。您是否注意到在设备上加载键盘时有 4-5 秒的延迟?我注意到我的键盘有 4-5 秒的延迟。还有,关于你的案子,朋友。恐怕我在使用仅限肖像的键盘方面有过不好的经历。当我切换到横向模式时,支持纵向的键盘只有糟糕的布局问题。似乎,自定义键盘必须首先确认请求键盘的应用布局。

标签: ios ios-app-extension custom-keyboard uideviceorientation viewwilltransitiontosize


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你能在viewDidAppear上试试同样的方法吗

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

    【讨论】:

    • 我试过了,但它不适用于自定义键盘视图控制器
    猜你喜欢
    • 2012-10-03
    • 2020-10-13
    • 2012-09-12
    • 2014-08-11
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2017-04-20
    • 2015-05-11
    相关资源
    最近更新 更多