NSView不会捕获keyDown事件

时间:2015-02-15 19:10:11

标签: objective-c events nsview keydown nsviewcontroller

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

- (BOOL) acceptsFirstResponder {
    return YES;
}

但它没有帮助。

请告诉我该怎么做。

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

1 个答案:

答案 0 :(得分:0)

您的观点在提供时接受第一响应者,但在您点击之前没有任何东西试图将其作为第一响应者。

在显示窗口initialFirstResponder之前设置它一段时间。如果您正在使用NIB,则可以在那里进行设置。或者你可以通过编程方式完成。

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