0

我有一个绑定到 NSTextView 的属性字符串。每次编辑字符串时,我都使用一种调用方法(使用 KVO),以根据正则表达式匹配向字符串添加背景颜色属性。我通过使用-initWithAttributedString:then -beginEditing, -addAttribute:,来创建一个新的可变属性字符串来做到这一点-endEditing。一旦我添加了我想要的所有背景颜色属性,我就会调用字符串的 setter[self setTextViewString:mutableAttributedString]问题是,如果实际上有任何属性添加到字符串中,它会终止撤消并将光标移动到字符串的末尾。

如何保持撤消?我通过在 setter 的任一侧调用 textView 的 selectedRanges 和 setSelectedRanges: 方法来保持光标位置,但这似乎仍然有点骇人听闻。

我无法将 textview 直接绑定到 mutableattributedstring,但似乎应该有一种更直接的方法来修改绑定的字符串,这样它就不会弄乱编辑。

PS,属性的添加发生在 KVO 方法通过调用完成之后,-performSelectorOnMainThread:这是我可以让添加的属性显示的唯一方法。

4

1 回答 1

0

[self setTextView:mutableAttributedString]

赦免?您正在将您的设置textView为属性字符串?将文本视图保留在那里不是更有意义吗?

尝试通过向文本存储发送消息来获取文本视图textStorage并用新的属性字符串替换其内容。setAttributedString:

于 2009-10-11T01:32:11.767 回答