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 的第一响应者。
我需要在 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 的第一响应者。