Ios 限制字符复制限制(&A);是否在swift中粘贴UITextView?
我限制用户在键入或复制粘贴文本时不超过200个字符的限制。假设我的文本字符数为190。现在我只能再输入10个字符了。即使我粘贴200个字符,它也只会粘贴复制文本的最初10个字符 现在的问题是当用户从UITextView中选择一些单词时。在这里,单词仍然被选择为高亮显示。现在,当我将复制的单词粘贴到选定的单词上时,它允许粘贴更多字符,即使限制为200 代码:Ios 限制字符复制限制(&A);是否在swift中粘贴UITextView?,ios,swift,uitextview,Ios,Swift,Uitextview,我限制用户在键入或复制粘贴文本时不超过200个字符的限制。假设我的文本字符数为190。现在我只能再输入10个字符了。即使我粘贴200个字符,它也只会粘贴复制文本的最初10个字符 现在的问题是当用户从UITextView中选择一些单词时。在这里,单词仍然被选择为高亮显示。现在,当我将复制的单词粘贴到选定的单词上时,它允许粘贴更多字符,即使限制为200 代码: func textView(_ textView: UITextView, shouldChangeTextIn range: NSRang
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) {
let str = (textView.text! as NSString).replacingCharacters(in: range, with: text)
if str.length >= 200 {
let index = str.index(str.startIndex, offsetBy: 200)
textView.text = str.substring(to: index).trim
}
let remainChars = 200 - textView.text!.length
self.descriptionCountLabel.text? = String(remainChars)
}
您可以尝试此操作,尽管它会因“撤消”而崩溃: 这可以防止错误,但并不理想,因为如果超过限制,用户将失去撤消的能力:
func textViewDidChange(_ textView: UITextView) {
if textView.text.count > 200 { textView.undoManager?.removeAllActions() }
textView.text = String(textView.text.prefix(200))
}
您是否询问如何确保如果文本视图有190个字符,并且用户选择了20个字符,然后尝试粘贴100个字符,选择的20个字符只会替换为前30个粘贴的字符,而文本视图中只有200个字符?如果用户键入了190个字符,则最大限制为200个。现在,用户只能再输入10个字符。如果用户复制了100个字符并粘贴,则只会粘贴前10个字符。我已处理此场景。如果用户选择了几个单词并粘贴这些字符,则最大限制为200个单词高亮显示&用户在选择(高亮显示)这些选定单词时粘贴这些复制的单词,然后它允许粘贴200多个单词如果您在
shouldChangeTextIn
中显式设置文本视图的text
属性,则此时必须返回false
。如果更改按原样进行,则仅返回true
。设置textView.text
后,在if
块末尾的my code中返回false的位置。
func textViewDidChange(_ textView: UITextView) {
if textView.text.count > 200 { textView.undoManager?.removeAllActions() }
textView.text = String(textView.text.prefix(200))
}