在 NSTextView 中捕获撤消和重做编辑文本组



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

我没有这样做,所以我只通过文档/知识。

由于您有权访问文本视图,因此您可以成为文本视图代理。然后,您将收到有用的消息...

在文本更改之前:

    文本
  • 视图:应该更改文本范围:替换字符串:
  • 文本
  • 视图:应该更改文本范围:替换字符串:
  • textView:shouldChangeTypingAttributes:toAttributes:

文本更改后:

  • textViewDidChangeTypingAttributes:

我不知道你是否会收到这些更改(UndoManager会绕过这些东西吗?),但你可能会。在任何情况下,您都可以在处理以前的消息时查询选择设置。

在选择更改之前:

  • 文本视图:将更改选择从字符范围:到字符范围:
  • 文本视图:将更改选择从字符范围:到字符范围:

后:

  • textViewDidChangeSelection:

UndoManager 应该告诉您它正在执行撤消,这意味着您可以将普通更改与基于撤消的更改区分开来。

这似乎足以继续下去,我希望它有所帮助。

相关内容

  • 没有找到相关文章

最新更新