iOS在自定义键盘上设置了所需的高度限制

Rob*_*b N 2 uitextfield ios autolayout custom-keyboard

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

myTextField.inputView = CustomKeyboard()
Run Code Online (Sandbox Code Playgroud)

CustomKeyboard类有子视图,并且需要比平常系统键盘多一点的高度自动布局约束.这会导致错误,因为系统正在添加必需的customKeyboard.height == 216约束.

我怎么告诉它不要添加这个约束?它被添加到了CustomKeyboards中的约束数组中superview.

(lldb) po type(of: self)
MyApp.CustomKeyboard    
(lldb) po self.superview!.constraints[0]
<NSLayoutConstraint:0x17428ab40 MyApp.CustomKeyboard:0x100d37580.height == 216   (active)>
Run Code Online (Sandbox Code Playgroud)

Rob*_*b N 6

我得到了Apple开发人员的支持.我实现了它,它的工作原理.这是他们所说的:

如果您inputView正在使用自动布局并且具有足够的约束以便它可以确定自己的高度(在示例项目中就是这种情况),那么您需要做的就是intrinsicContentSize在输入视图中覆盖并返回CGSize高度不是 UIViewNoIntrinsicMetric.例如,这将做:

override var intrinsicContentSize: CGSize {
    return CGSize(width: UIViewNoIntrinsicMetric, height: 0)
}
Run Code Online (Sandbox Code Playgroud)