粘贴长文本时,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
}
}
我已经按照这个解决方案
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
}
}