我们有一个多年来一直工作的自定义键盘。它是在iOS8中创建的,当它们首次出现并在iOS 9中为Swift重写时。它是以编程方式构建的,没有涉及到nib。 在安装了iOS 11的iPad设备上,它显示的高度约为75px。整个键盘都存在并且功能正常,但它下面有一个灰色条。我有一个10.3.2的iPad,它工作得很好。在iPad air 2的模拟器上,以及我们在iOS 11中使用的两个物理设备显示的太高。 最初它没有任何限制。我为高度添加了一个限制,但这并没有什么好处。iOS中的自定义键盘显示错误位置11
override func viewDidLoad() {
...
let size = self.orientationUtil.getSizeForCurrentOrientation()
heightConstraint = NSLayoutConstraint(item: self.inputView as Any,
attribute: NSLayoutAttribute.height,
relatedBy: NSLayoutRelation.equal,
toItem: nil,
attribute: NSLayoutAttribute.notAnAttribute,
multiplier: 1.0,
constant: size.height)
...
}
override func updateViewConstraints() {
super.updateViewConstraints()
if (self.view.frame.size.width == 0 || self.view.frame.size.height == 0) {
return
}
let size = self.orientationUtil.getSizeForCurrentOrientation()
inputView?.removeConstraint(heightConstraint!)
heightConstraint!.constant = size.height
inputView?.addConstraint(heightConstraint!)
}
这里的代码应该足以确保键盘位于主机视图的底部吗?应该提供正确的高度限制,足以让系统知道应该在哪里显示?我想过尝试底部约束,但我不确定我会用作toItem:参数。有没有人注意到他们的键盘在iOS 11的iPad上显示不正确?
TIA, 迈克
嗨@mikey解决这个问题? – Rock
Hi @Rock。是的,我想出了解决方案,并将其作为下面的答案发布。对不起,我忘了回来,并将其标记为答案。我刚纠正了这个疏漏。解决方案是添加bottomAnchor约束。此解决方案可能无法为您工作。在我们的例子中,我们希望能够在两个不同的键盘,一个字母键盘和一个图像键盘之间切换。在解决方案中,代码'self'是UIInputViewController,self.keyboard是我们的扩展UIView的键盘。所以我们不得不将键盘视图锚定到UIInputViewController的内置视图中。 – Mikey