NSTextViewのメソッドが文字入力中に呼び出される順番

次のような感じで、文字入力すると呼び出される。ただし色々注釈つき。

  1. keyDown:
  2. textView:doCommandBySelector: delegateメソッドだけど、Enterキーを押したときなんかに呼び出される。
  3. insertText: ここで実際に文字列を入力する。ただし、IMでの変換中には確定後になってこれ以降が呼び出される。
  4. didChangeText:, textDidChange: おしまい

ここのように、keyDown:を書き直すより、insertText:を書き直したほうが効率が良いような気がする。

で、一度に複数の改行がペースト以外でinsertText:に渡されるような場合が思いつかないので、

if ( [insertedText isEqualToString: @"\r"] {
    [super insertText: @"\n"];
} else {
    [super insertText: insertedText];
}

で十分かな。