更新: 以下のようにファーストレスポンダに設定された NSView サブクラスから NSView keyUp メソッドをオーバーライドしていますが、それが呼び出されているという証拠はまだ見られません。
@implementation svsView
- (BOOL)acceptsFirstResponder {
return YES;
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
NSLog(@"key up'd!");
}
@end
-- 元の投稿 -- 私は Cocoa と Obj-C を初めて使用し、(void)keyUp: を自分のコントローラー クラス (それ自体は NSController 型) の実装内から実行しようとしています。ただし、これを配置するのに適切な場所かどうかはわかりません。私は一連の同様のボタンをそれぞれ一意のキー相当 (IB ボタン属性) に設定し、それぞれが (IBAction)keyInput メソッドを呼び出して、各キーの ID を別のオブジェクトに渡します。これは問題なく動作しますが、各キーが離されたタイミングも追跡したいと考えています。
-- 元の [悪い] 例 --
@implementation svsController
//init
//IBActions
- (IBAction)keyInput:(id)sender {
//--do key down stuff--
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
}
@end
失敗すると、ユーザー定義のkeyInputのように、keyUpを(voidではなく)IBActionとして試し、Interface Builderの適切なボタンに接続しましたが、keyUpはキーが押されていないときにのみ呼び出されました解放されたとき。(私はそれが起こるだろうと思っていました。)
申し訳ありませんが、このメソッドを別のクラスに配置するか、別の方法で行う必要がありますか? ただし、どこにいても、コントローラー クラスが所有するオブジェクトにアクセスできる必要があります。
あなたが持っているかもしれない洞察に感謝します。