4

我正在为现有应用程序编写插件,我需要捕获受撤消和重做操作影响的修改文本和范围。我可以访问应用程序创建的 NSUndoManager 和 NSTextView,并且可以注册通知。有没有办法利用这些元素来获取撤消/重做的文本组?

4

1 回答 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 回答