0

我创建了一个 NSViewController 实例并将其作为子视图添加到主窗口的内容视图中。我希望能够捕获键盘事件,但我不知道如何实现它。经过一些研究,我了解到我需要实现NSViewController 中acceptsFirstResponderkeyUp:event:keyDown:event:方法,但之后我仍然没有工作.

- (void)applicationDidFinishLaunching:(NSNotification*)aNotification {
    /* GViewController subview of NSViewController */
    GViewController *g = [[GViewController alloc] initWithNibName:@"GViewController" bundle:nil];
    [contentView addSubview: g];
}
4

2 回答 2

2

这些方法必须出现在 的子类中NSView,而不是NSViewController。这样做也没有任何意义addSubview:someViewController;该方法的参数需要是一个视图。

于 2011-05-28T18:16:05.620 回答
0
override func keyDown(with event: NSEvent) {
    super.keyDown(with: event)
    Swift.print("Caught a key down: \(event.keyCode)!") 
}

用事件覆盖 keyDown 在 swift 中为我工作你可以在 object-c 中尝试相同的方法。查看官方文档 https://developer.apple.com/documentation/appkit/nsresponder/1525805-keydown?language=objc

于 2019-05-06T10:15:03.890 回答