粘贴长文本时UITextView动态高度滚动不起作用
Posted
技术标签:
【中文标题】粘贴长文本时UITextView动态高度滚动不起作用【英文标题】:UITextView dynamic height scrolling doesn't work when long text is pasted 【发布时间】:2019-09-18 16:02:20 【问题描述】:我已经实现了当高度达到某个值时动态更改UITextView
的高度,遵循这个解决方案https://***.com/a/38454252/12006517
这很好用,但是当我第一次在其中粘贴大量文本时,文本视图会冻结。粘贴大块文本后,它不会到达文本内容的末尾,并且光标在文本视图冻结时消失。我必须按删除键并开始输入,然后它开始正常工作。
大量文本作品的后续粘贴。所以问题只会在第一次粘贴时发生。
我该如何解决这个问题?
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
【问题讨论】:
【参考方案1】:你可以试试下面的代码。它工作正常。
func textViewDidChange(_ textView: UITextView)
let sizeThatShouldFitTheContent = textView.sizeThatFits(textView.frame.size)
if sizeThatShouldFitTheContent.height > 120
textView.isScrollEnabled = true
else
textView.isScrollEnabled = false
【讨论】:
以上是关于粘贴长文本时UITextView动态高度滚动不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将字符串粘贴到 uitextview 中的文本底部时会添加额外的空间