我有一个NSTextStorage
代表正在执行textStorageDidProcessEditing:
. 不幸的是,其中userInfo
不包含有关文本更改的任何详细信息。
我怎样才能知道实际发生了什么变化?
理想情况下,我想知道发送到的所有内容[NSLayoutManager textStorage:edited:range:changeInLength:invalidatedRange:]
,但仅编辑范围就足够了。
我有一个NSTextStorage
代表正在执行textStorageDidProcessEditing:
. 不幸的是,其中userInfo
不包含有关文本更改的任何详细信息。
我怎样才能知道实际发生了什么变化?
理想情况下,我想知道发送到的所有内容[NSLayoutManager textStorage:edited:range:changeInLength:invalidatedRange:]
,但仅编辑范围就足够了。
您可以编写自己的 NSLayoutManager 子类并将其添加到您的 NSTextSTorage 中addLayoutManager:
。
您还可以使用 KVO 来观察 NSTextStorage 对象的字符属性(或它的任何其他属性),并且您可以准确地了解更改的内容
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
使用NSTextStorage 的getter 方法editedRange 和changeInLength。