我正在尝试为UITextField创建自定义键盘。这不是系统扩展;它仅在我的应用程序内。

myTextField.inputView = CustomKeyboard()
CustomKeyboard类具有子视图和自动布局约束,与常规系统键盘相比,它们需要更高的高度。这会导致错误,因为系统正在添加必需的customKeyboard.height == 216约束。

我如何告诉它不添加此约束?它已添加到CustomKeyboardsuperview中的约束数组中。
(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)
}

07-27 15:20