自定义键盘显示在iOS 11中的错误位置

时间:2017-10-09 18:36:27

标签: ios swift ipad ios-keyboard-extension

我们有一个多年来一直工作的自定义键盘。它是在iOS8中首次出现并在iOS 9中为Swift重新编写时创建的。它以编程方式构建,不涉及笔尖。 在安装了iOS 11的iPad设备上,它显示出大约75px太高。整个键盘都存在并且功能齐全,但它下方有一个灰色条。我有一个10.3.2的iPad,它的工作正常。在带有iPad air 2的模拟器和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:参数。有没有人注意到他们的键盘在iPad 11上显示不正确?

TIA, 麦克

1 个答案:

答案 0 :(得分:1)

我发现键盘的内容需要限制在视图的底部。在我的情况下,我们的键盘(UIView)在self.keyboard中。

self.keyboard.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true self.keyboard.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true

添加这两行后,键盘在底部。

麦克