当有换行符时,我遇到字符串替换问题。
如何正确替换字符串或字符串的一部分以便触发绑定。 我已经使用了
open func replaceCharacters(in range: NSRange, with string: String)
但它不会触发绑定。
当我使用func insertText(_ string: Any, replacementRange: NSRange)
时,我必须跳NSString
跳舞
let textView = NSTextView()
textView.string = "LongString with newlines\r\nGuten Tag!"
textView.string.count //prints 35
(textView.string as NSString).length //prints 36
textView.insertText("XX", replacementRange: NSMakeRange(0, (textView.string as NSString).length)
我觉得我正在与框架作斗争。什么是正确(快速)的方法?
请注意
textView.string = "XX"
不会触发绑定
要触发绑定,最好的方法是使用
insertText(_ string: Any, replacementRange: NSRange)
textView.insertText("", replacementRange: NSRange(..<someIndex, in: text))
也可以直接在
replaceCharacters(in range: NSRange, with string: String)
上使用 didChangeText()
,然后使用 NSTextView
。
textView.replaceCharacters(in: NSRange(..<someIndex, in: text), with: "")
textView.didChangeText()
注意:请勿修改委托调用中的文本,例如
textDidChange(_ notification: Notification)
。这会导致撤消合并,并且撤消后您的应用程序将崩溃。