我创建了一个NSViewController实例,并将其作为子视图添加到主窗口的内容视图中。我希望能够捕获键盘事件,但我不知道如何实现它。经过一些研究,我了解到我需要实现acceptsFirstResponder
和keyUp:event:
和keyDown:event:
方法NSViewController,但在那之后我仍然没有工作。
- (void)applicationDidFinishLaunching:(NSNotification*)aNotification {
/* GViewController subview of NSViewController */
GViewController *g = [[GViewController alloc] initWithNibName:@"GViewController" bundle:nil];
[contentView addSubview: g];
}
答案 0 :(得分:2)
这些方法必须存在于NSView
的子类中,而不是NSViewController
。做addSubview:someViewController
也没有任何意义;该方法的参数需要是一个视图。
答案 1 :(得分:0)
override func keyDown(with event: NSEvent) {
super.keyDown(with: event)
Swift.print("Caught a key down: \(event.keyCode)!")
}
使用事件覆盖keyDown迅速为我工作 您可以在object-c中尝试相同的方法。 查看官方文档 https://developer.apple.com/documentation/appkit/nsresponder/1525805-keydown?language=objc