4

iOSでこれを行う方法は知っていますが、Cocoaでそれを行う方法を理解できません。

キーボードイベントをキャプチャしたいのですが、それを実現するには、acceptsFirstResponderメソッドをオーバーライドする必要があると思います(keyDownメソッドがトリガーされます)。そこで、NSCustomViewを拡張するクラスを作成し、メインウィンドウに追加しようとしましたが、その方法がわかりません。これまで、カスタムビューをメインビューに追加してから、次のようにプログラムで追加しようとしました。

TestView *view = [[TestView alloc] init];
[[_window contentView] addSubview:view];

しかし、これは機能していません。では、どうすればこれを行うことができますか?

4

1 に答える 1

4

ビューがウィンドウに追加されているかどうかを確認するには、ビューのviewDidMoveToWindowメソッドをオーバーライドして、の値をログに記録します[self window](その場合nil、ビューはウィンドウから削除されています)。

- (void)viewDidMoveToWindow
{
    NSLog(@"window=%p", [self window]);
    [super viewDidMoveToWindow];
}

NSViewではなくNSCustomView、をサブクラス化する必要があります。は、ではなく、initWithFrameの指定された初期化子です。NSViewinit

試す:

TestView *view = [[TestView alloc] initWithFrame:NSMakeRect(0, 0, 100, 200)];
[[_window contentView] addSubview:view];
于 2012-06-27T12:42:23.377 に答える