键盘扩展如何知道它在iPad上的iPhone应用程序中运行?

问题描述:

当在iPad上使用iPhone应用程序时,键盘扩展程序只能知道iPad的屏幕尺寸,但实际上我应该知道它就像在iPhone上运行一样,并获得像iPhone一样的尺寸。键盘扩展如何知道它在iPad上的iPhone应用程序中运行?

我当前的代码在iPad上的这个样子的一个iPhone应用程序运行:

enter image description here

UIInputViewControllerviewDidAppear,其实我可以得到self.inputView框架,也就是在这种情况下320。

然而,self.viewself.inputView的框架是viewDidloadviewWillAppear两者CGRecteZero,这实际上就是我们应该只[super viewDidAppear]后设置键盘的高度。

+0

我绝对没有做过任何与创建自定义扩展,但我很想知道,如果你不能只是将框架的键盘宽度设置为self.view.frame.size.width,并添加UIViewAutoresizingFlexibleWidth autoresizingMask?使用任何正常的子视图,将处理它的大小调整到视图的宽度,而不需要实际测试的值.. – Mike 2014-09-26 04:11:58

+0

@Mike是的,你是正确的,但由于某些原因,我们仍然手动计算大小。 – Henry 2014-09-26 06:52:01

可以在调用UIInputViewController的viewDidLayoutSubviews中的[super viewDidLayoutSubviews]后立即检查键盘视图(self.view.frame)的实际大小。它是第一个检查尺寸并比viewDidAppear快得多的地方。

您的键盘扩展应该是通用的,如果是这样的话,那么您可以使用下面的代码获取设备类型(iPhone/iPad)。

let isPad = UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad 

它可能可能是因为您使用以下方法来获取屏幕边界

UIScreen.mainScreen().bounds.size 

这种方法可以让设备的整体高度,宽度在键盘扩展。

通过使用上述两个条件可以使用嵌套条件来解决您的问题。