4

私は既存のアプリ用のプラグインを作成しており、元に戻す操作とやり直し操作の影響を受ける変更されたテキストと範囲をキャプチャする必要があります。アプリが作成した NSUndoManager と NSTextView にアクセスでき、通知を登録できます。これらの要素を活用して、元に戻したりやり直したりしたテキストのグループを取得する方法はありますか?

4

1 に答える 1

3

私はこれを行っていないので、ドキュメント/知識のみを使用しています。

テキストビューにアクセスできるので、テキストビューのデリゲートになることができます。その後、有益なメッセージが届きます...

テキストが変更される前:

  • 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 に答える