我正在为现有应用程序编写插件,我需要捕获受撤消和重做操作影响的修改文本和范围。我可以访问应用程序创建的 NSUndoManager 和 NSTextView,并且可以注册通知。有没有办法利用这些元素来获取撤消/重做的文本组?
问问题
1119 次
1 回答
3
我没有这样做,所以我只是通过文档/知识。
因为您可以访问 textview,所以您可以成为 textview 代表。然后,您将收到有用的消息...
文字修改前:
- textView:shouldChangeTextInRange:replacementString:
- textView:shouldChangeTextInRanges:replacementStrings:
- textView:shouldChangeTypingAttributes:toAttributes:
文字修改后:
- textViewDidChangeTypingAttributes:
我不知道您是否会收到这些更改(UndoManager 会绕过这些内容吗?),但您可能会收到。在任何情况下,您都可以在处理之前的消息时查询选择设置。
在选择更改之前:
- textView:willChangeSelectionFromCharacterRange:toCharacterRange:
- textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:
后:
- textViewDidChangeSelection:
UndoManager 应该告诉您它正在执行 Undo,这意味着您可以区分普通更改和基于 undo 的更改。
这似乎足以继续,我希望它有所帮助。
于 2012-06-11T16:41:46.407 回答