NSView无法捕获keyDown事件



我需要在NSViewController的子类中捕获mouseDown和keyDown事件,由于这是不可能的(如果我错了,请纠正我),我将GameViewController类留空,并将其所有方法放到一个新的GameView类中。在GameViewController.xib的身份检查器中,我将类设置为GameView,而File的所有者设置为GameViewController。毕竟,我的mouseDown方法是有效的,但keyDown不起作用。我试过这个:

- (BOOL) acceptsFirstResponder {
    return YES;
}

但这无济于事。

请告诉我该怎么做。

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

您的视图在提供第一个响应程序时接受它,但在单击之前,没有任何东西试图使它成为第一个响应者。

在显示窗口之前设置一段时间的initialFirstResponder。如果您使用的是NIB,可以在那里进行设置。或者你可以通过编程来实现。

窗口显示后,可以调用[window makeFirstResponder:view]使视图成为其窗口的第一个响应程序。

最新更新