粘贴长文本时,UITextView 动态高度滚动不起作用

UITextView dynamic height scrolling doesn't work when long text is pasted

我已经按照这个解决方案

在高度达到特定值时动态更改 UITextView 的高度

这很好用,但是当我第一次在其中粘贴大块文本时,文本视图会冻结。粘贴大块文本后,它不会到达文本内容的末尾,并且文本视图冻结时光标会消失。我必须按下删除键并开始输入,然后它才能正常工作。

大块文本的后续粘贴有效。所以只有第一次粘贴才会出现问题。

我该如何解决这个问题?

 class MyViewController: UIViewController {
    let messageTextViewMaxHeight: CGFloat = 200
 }

 extension MyViewController: UITextViewDelegate {

    func textViewDidChange(_ textView: UITextView) {

        if textView.contentSize.height >= self.messageTextViewMaxHeight {
            textView.isScrollEnabled = true
        } else {
            textView.frame.size.height = textView.contentSize.height
        }

    }

 }

您可以试试下面的代码。它工作正常。

func textViewDidChange(_ textView: UITextView) {

    let sizeThatShouldFitTheContent = textView.sizeThatFits(textView.frame.size)
    if sizeThatShouldFitTheContent.height  > 120 {
        textView.isScrollEnabled = true
    }else{
        textView.isScrollEnabled = false
    }
}