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

时间:2017-03-10 16:26:49

标签: ios autolayout uitextfield custom-keyboard

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

myTextField.inputView = CustomKeyboard()

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

如何告诉它不要添加此约束?它被添加到CustomKeyboard的{​​{1}}中的约束数组中。

superview

2 个答案:

答案 0 :(得分:6)

我得到了Apple开发人员的支持。我实现了这个并且它有效。这是他们所说的:

  

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

override var intrinsicContentSize: CGSize {
    return CGSize(width: UIViewNoIntrinsicMetric, height: 0)
}

答案 1 :(得分:1)

很遗憾,您没有显示CustomKeyboard代码。但很可能这里的问题是它不是UIInputView子类。使它成为一个UIInputView子类,现在你可以设置它的框架;原点和宽度将被忽略,但高度将被遵守。确保UIInputView的内部约束不与此高度冲突。