我正在为现有应用编写插件,我需要捕获受撤消和重做操作影响的修改后的文本和范围.我能够访问应用程序创建的NSUndoManager和NSTextView,并且我能够注册通知.有没有办法利用这些元素来获取撤消/重做的文本组?
解决方法
我没有这样做,所以我只是通过文档/知识.
因为您可以访问textview,所以您可以成为textview委托.然后,您将收到有用的消息……
在文本更改之前:
> textView:shouldChangeTextInRange:replacementString:
> textView:shouldChangeTextInRanges:replacementStrings:
> textView:shouldChangeTypingAttributes:toAttributes:
文字更改后:
> textViewDidChangeTypingAttributes:
我不知道你是否会收到这些更改(UndoManager是否会绕过这些内容?),但你可以.无论如何,您可以在处理以前的消息时查询选择设置.
在选择更改之前:
> textView:willChangeSelectionFromCharacterRange:tocharacterRange:
> textView:willChangeSelectionFromCharacterRanges:tocharacterRanges:
后:
> textViewDidChangeSelection:
UndoManager应该告诉您它正在执行撤消,这意味着您可以区分普通更改和基于撤消的更改.
这似乎已经足够了,我希望它有所帮助.