iOS 11 中自定义键盘显示在错误的位置
Custom keyboard displays in wrong location in iOS 11
我们有一个已经使用多年的自定义键盘。它是在 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 和 iOS 11 上显示不正确?
TIA,
麦克
我发现键盘的内容需要限制在视图的底部。在我的例子中,我们的键盘(一个 UIView)在 self.keyboard.
self.keyboard.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
self.keyboard.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
添加这两行后,键盘固定在底部。
麦克
我们有一个已经使用多年的自定义键盘。它是在 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 和 iOS 11 上显示不正确?
TIA, 麦克
我发现键盘的内容需要限制在视图的底部。在我的例子中,我们的键盘(一个 UIView)在 self.keyboard.
self.keyboard.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
self.keyboard.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
添加这两行后,键盘固定在底部。
麦克