与绑定一起使用时如何正确替换 NSTextView 的字符串

问题描述 投票:0回答:1

当有换行符时,我遇到字符串替换问题。

如何正确替换字符串或字符串的一部分以便触发绑定。 我已经使用了

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"
不会触发绑定

cocoa appkit cocoa-bindings nstextview
1个回答
0
投票

要触发绑定,最好的方法是使用

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)
。这会导致撤消合并,并且撤消后您的应用程序将崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.