NSUndoManager を見てみる

Undo/Redo の機能は、Text View や Text Field には標準で装備されているので、特に何もすることはない。でも、ちょっと手を加えたいとか、いずれは、この機能が備わっていないものへの応用とかを書いていけたらなぁと思ってメモを始めた。

とりあえずは、Undo/Redo をクリアしたいときの方法。これは、Document-based じゃないアプリケーションの Window にある Text View でテキストを表示させているときに、別のファイルの内容を表示させたのに、前のファイルのときの Undo/Redo の情報が残っていて、それが新しいファイルに適用されてしまったので、それを防ぐ方法ということで探した。

ここでは、@textView という NSTextView の Undo/Redo をクリアする。それには、NSUndoManagerremoveAllActions というメソッドを使う。NSUndoManager は、それぞれのオブジェクト(ターゲット?)に備わっているので、undoManager というメソッドで、履歴をクリアしたい NSTextView の Undo Manager にアクセスし、それに対して実行する。

@textView.undoManager.removeAllActions

これで、この @textView の Redo/Undo の履歴が消える。