我有一个绑定到 NSTextView 的属性字符串。每次编辑字符串时,我都使用一种调用方法(使用 KVO),以根据正则表达式匹配向字符串添加背景颜色属性。我通过使用-initWithAttributedString:
then -beginEditing
, -addAttribute:
,来创建一个新的可变属性字符串来做到这一点-endEditing
。一旦我添加了我想要的所有背景颜色属性,我就会调用字符串的 setter[self setTextViewString:mutableAttributedString]
问题是,如果实际上有任何属性添加到字符串中,它会终止撤消并将光标移动到字符串的末尾。
如何保持撤消?我通过在 setter 的任一侧调用 textView 的 selectedRanges 和 setSelectedRanges: 方法来保持光标位置,但这似乎仍然有点骇人听闻。
我无法将 textview 直接绑定到 mutableattributedstring,但似乎应该有一种更直接的方法来修改绑定的字符串,这样它就不会弄乱编辑。
PS,属性的添加发生在 KVO 方法通过调用完成之后,-performSelectorOnMainThread:
这是我可以让添加的属性显示的唯一方法。