键盘扩展如何知道它在iPad上的iPhone应用程序中运行?
问题描述:
当在iPad上使用iPhone应用程序时,键盘扩展程序只能知道iPad的屏幕尺寸,但实际上我应该知道它就像在iPhone上运行一样,并获得像iPhone一样的尺寸。键盘扩展如何知道它在iPad上的iPhone应用程序中运行?
我当前的代码在iPad上的这个样子的一个iPhone应用程序运行:
答
在UIInputViewController
viewDidAppear
,其实我可以得到self.inputView
框架,也就是在这种情况下320。
然而,self.view
和self.inputView
的框架是viewDidload
或viewWillAppear
两者CGRecteZero
,这实际上就是我们应该只[super viewDidAppear]
后设置键盘的高度。
答
可以在调用UIInputViewController的viewDidLayoutSubviews中的[super viewDidLayoutSubviews]后立即检查键盘视图(self.view.frame)的实际大小。它是第一个检查尺寸并比viewDidAppear快得多的地方。
答
您的键盘扩展应该是通用的,如果是这样的话,那么您可以使用下面的代码获取设备类型(iPhone/iPad)。
let isPad = UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad
它可能可能是因为您使用以下方法来获取屏幕边界
UIScreen.mainScreen().bounds.size
这种方法可以让设备的整体高度,宽度在键盘扩展。
通过使用上述两个条件可以使用嵌套条件来解决您的问题。
我绝对没有做过任何与创建自定义扩展,但我很想知道,如果你不能只是将框架的键盘宽度设置为self.view.frame.size.width,并添加UIViewAutoresizingFlexibleWidth autoresizingMask?使用任何正常的子视图,将处理它的大小调整到视图的宽度,而不需要实际测试的值.. – Mike 2014-09-26 04:11:58
@Mike是的,你是正确的,但由于某些原因,我们仍然手动计算大小。 – Henry 2014-09-26 06:52:01