読者です 読者をやめる 読者になる 読者になる

日々精進

新しく学んだことを書き留めていきます

NSTextFieldでReturn等のkeyDownイベントを検知する

mac

まずdelegateを設定する。

self.inputTextField.delegate = self;

以下のように、delegateメソッドを実装すると、Returnを押した時のイベントを検知出来る。

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command {
    if (command == @selector(insertNewlineIgnoringFieldEditor:)) {
        // Returnを入力すると、この分岐に入る
        return YES;
    } else {
        return NO;
    }
}

キーを直接指定出来ないの不便だなあと思ったけど、キーアサインを変更しても大丈夫なようにこうしてあるんだろうなぁ。
参考:Cocoa Text System - Default System Key Bindings
 Digitalians' Alchemy | NSTextView のキーバインド