iOS Swift3 TextView 行在错误的位置

iOS Swift3 TextView line at wrong position

我有一个 textView,用作聊天消息的输入字段。如果文本多于一行无法容纳,我希望它展开。

func textViewDidChange(_ textView: UITextView) {
    self.textViewHeight.constant = textView.contentSize.height
}

如果用户在 textView 中输入内容,我会以编程方式设置高度限制。

<- 对于一个衬里,它看起来不错。

<- 按回车后它会隐藏。

<- 第二次输入再次显示。

我在这里做错了什么?我尝试重新创建 whatsapp / imessage 的外观,其中不会发生这种隐藏。

这是因为您在错误的委托函数中更改了大小。完成编辑后调用委托 textViewDidChange(调用 resignFirstResponder)。

您应该将更改高度的代码放入此函数中:

optional func textView(_ textView: UITextView, 
    shouldChangeTextIn range: NSRange, 
       replacementText text: String) -> Bool

所以这会在您键入时更改 UITextView 的高度,而不是在您完成键入之后。