keyup keydown方法NSViewController

时间:2011-05-28 17:15:17

标签: objective-c cocoa nsviewcontroller

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

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

2 个答案:

答案 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