【发布时间】:2015-10-27 15:19:38
【问题描述】:
我花了几天时间解决这个问题。
我有一个inputAccessoryView,它由一个UIView 组成,其中包含一个textView 和两个按钮。 inputAccessoryView 的行为符合预期,并且在除一种情况外的所有情况下都可以正常工作。
当 textView 的高度增加时,我试图将inputAccessoryView 的高度增加相同的量。当我在textViewDidChange 中重新定义inputAccessoryView 的高度时,inputAccessoryView 在键盘上方向下而不是向上增加高度。
我尝试了 SO 的许多不同建议,但没有任何效果。我猜这是inputAccessoryView 中自动添加的NSLayoutConstraint,但我不知道如何在swift 和iOS 8.3 中更改该值。
func textViewDidChange(textView: UITextView) {
var contentSize = messageTextView.sizeThatFits(CGSizeMake(messageTextView.frame.size.width, CGFloat.max))
inputAccessoryView.frame.size.height = contentSize.height + 16
}
添加
inputAccessoryView.setTranslatesAutoresizingMaskIntoConstraints(true)
上面的代码有帮助,并且 inputAccessoryView 的高度正确地向上增加,但是我无法同时满足多个约束的约束,并且很难识别违规者。我还得到了一个奇怪的效果,即 textView 在每第二个新行实例的下方创建额外的空间。
谢谢。
【问题讨论】:
-
我注意到 textViewDidChange 的第一次调用确实在没有 setTranslatesAutoresizingMaskIntoConstraints 行的情况下正确调整了 inputAccessoryView 的大小,但后续调用没有任何效果。我想知道为什么会这样,以及如何每次都将其恢复到初始状态
标签: ios swift nslayoutconstraint autoresizingmask inputaccessoryview