【发布时间】:2017-05-28 21:11:11
【问题描述】:
我正在使用 UITextView 并实现了委托功能
var count = 0
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
print(text)
count += 1
print(count)
return true
}
样本
当我从键盘选择预测文本时,shouldChangeTextInRange 委托调用了两次。
- 为什么这个委托调用了两次?
- 为什么单独使用预测文本会发生这种情况
【问题讨论】:
-
您是否要计算字符数?如果是这样,那是行不通的,因为删除一个字符会增加而不是减少它
-
count 是看代理被调用了多少次
-
那有什么问题呢?为什么在您的应用程序中被调用两次?
-
当我从预测文本(键盘上方的自动建议文本)中选择任何单词时,代表会调用两次。想控制它。如果它被调用两次,我放置在 shouldTextChangeInRange 中的逻辑将无法按预期工作
-
我不确定它是否适合您但是当您当时从预测的单词中选择单词时,它首先设置一个单词然后附加一个空格,这就是它调用委托两次的原因。所以简单的解决方案是在删除空格后检查插入的字符数。将代码发布到下一个评论中请检查。它对我有用
标签: ios swift uitextview uitextviewdelegate