NSView 不捕获 keyDown 事件

NSView doesn’t catch keyDown events

我需要在 NSViewController 的子 class 中捕捉 mouseDown 和 keyDown 事件,因为这是不可能的(如果我错了,请纠正我)我把我的 GameViewController class 留空了,将其所有方法放入新的 GameView class。在 GameViewController.xib 的身份检查器中,我将我的 class 设置为 GameView,而 File's Owner 设置为 GameViewController。毕竟,我的 mouseDown 方法有效,但 keyDown 无效。 我试过这个:

- (BOOL) acceptsFirstResponder {
    return YES;
}

但没有用。

请告诉我该怎么做。

UPD:实际上 keyDown 方法有效,但首先我需要单击 window 的空白 space 上的某处,然后一切都按计划进行。再次触发 mouseDown 事件没有问题。我可能做错了什么?

你的视图在提供时接受第一响应者,但在你点击之前没有任何东西试图让它成为第一响应者。

在显示之前设置 window 的 initialFirstResponder 一些时间。如果您使用的是笔尖,可以在那里设置。或者您可以通过编程方式完成。

在 window 显示后,您可以调用 [window makeFirstResponder:view] 使视图成为其 window 的第一响应者。