我正在尝试为UITextField
创建自定义键盘。这不是系统扩展;它仅在我的应用程序内。
myTextField.inputView = CustomKeyboard()
CustomKeyboard
类具有子视图和自动布局约束,与常规系统键盘相比,它们需要更高的高度。这会导致错误,因为系统正在添加必需的customKeyboard.height == 216
约束。我如何告诉它不添加此约束?它已添加到
CustomKeyboard
的superview
中的约束数组中。(lldb) po type(of: self)
MyApp.CustomKeyboard
(lldb) po self.superview!.constraints[0]
<NSLayoutConstraint:0x17428ab40 MyApp.CustomKeyboard:0x100d37580.height == 216 (active)>
最佳答案
我得到了Apple开发人员支持的答复。我已经实现了,并且可以正常工作。他们说的是:
如果您的inputView
使用自动布局并且具有足够的约束以便可以确定其自身的高度(在示例项目中就是这种情况),那么您要做的就是在输入视图中覆盖intrinsicContentSize
并返回具有高度的CGSize
那不是UIViewNoIntrinsicMetric
。例如,这样做:
override var intrinsicContentSize: CGSize {
return CGSize(width: UIViewNoIntrinsicMetric, height: 0)
}