TextView文本超出TextArea

时间:2018-02-18 06:55:01

标签: ios swift uitextview

我正在做聊天模块的工作。我正在使用TextView发送消息,但是当文本超出textview高度时,textView不会滚动感染TextView文本区域中显示的文本。    enter image description here

我正在使用此代码扩展文本视图内容区域。

private let kMessageViewWidths = CGFloat(UIScreen.main.bounds.size.width - 168)

func textViewDidChange(_ textView: UITextView) {

    self.setTextViewSizeWithContent()
}
func setTextViewSizeWithContent() {

    let newSize = self.calculateSize(chatTextView: self.messageTF, chatText: self.messageTF.text, withFixedSize: kMessageViewWidths)
    self.messageViewHeightConstraint.constant = newSize.height
    self.view.layoutIfNeeded()
}
func calculateSize(chatTextView: UITextView, chatText: String, withFixedSize: CGFloat) -> CGSize {
    let textView = UITextView()
    textView.text = chatText
    textView.frame = chatTextView.frame
    textView.font = chatTextView.font
    textView.tag = chatTextView.tag
    let fixedWidth = withFixedSize
    textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    var newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    var newFrame = textView.frame
    newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: chatTextView.contentSize.height)
    newSize.height = newSize.height + CGFloat(30)

    if newSize.height > 100 {
        newSize.height = 100
    }
    return newSize
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试更改textView的框架,而不是更改高度约束。

您必须计算新的y位置。请记住,当您更改视图的高度但保持恒定的y位置时,视图会向下移动。

getActivity().onBackPressed();