问题描述
我已经实现了从UI粘贴板复制粘贴,然后显示前300个字符。我从复制粘贴中禁用了表情符号,问题仅在第一次出现时才出现,在此之后一切正常。它可以正常工作一段时间,但有时可以正确粘贴,并在一段时间后删除粘贴的文本。 iOS 12,13.6中存在相同问题
这是我的代码:-
func textView(_ textView: UITextView,shouldChangeTextIn range: NSRange,replacementText text: String) -> Bool {
if let paste = UIPasteboard.general.string,text == paste {
print("paste")
if (textView.text + text).containsEmoji(){
return false
}else{
return true
}
}
return textView.text.count + (text.count - range.length) <= 300}
func textViewDidChange(_ textView: UITextView){
if textView.text.count >= 300{
let trimstring = String(textView.text.prefix(300))
textView.text = trimstring
}
}
解决方法
如果您只需要前300个字符,则您的前缀函数应采用'300'而不是'320'...
func textViewDidChange(_ textView: UITextView){
if textView.text.count >= 300{
let trimString = String(textView.text.prefix(300)) // <- try this
textView.text = trimString
}
}
编辑
此外,如果您不想将字符串替换为与剪贴板不匹配的内容,则“ shouldChangeTextIn”中的最后一个return语句应为false。那可能是你的问题。