小编Ber*_*nem的帖子

Swift NSViewController响应mouseDown事件,但不响应keyDown事件

我正在尝试使用Swift和Cocoa为OS X创建一个应用程序.我希望应用程序响应关键事件而不将焦点放在文本字段中.我在Xcode中创建了一个带有故事板的新Cocoa项目,并将ViewController.swift类修改为以下内容:

import Cocoa

class ViewController: NSViewController {

    override func mouseDown(theEvent: NSEvent) {
        println( "Mouse Clicked" )
    }

    override func keyDown(theEvent: NSEvent) {
        println( "Key Pressed" )
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override var representedObject: AnyObject? {
        didSet {
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,当我点击窗口时我得到控制台输出,但是当我按任意键时我没有得到任何控制台输出.

所以我的问题是:为什么我的程序会响应鼠标事件而不是关键事件?我需要做些什么额外的步骤才能使关键事件像鼠标事件一样工作?

我的视图控制器似乎在响应器链中,因为它拦截了鼠标事件,所以这似乎不是问题所在.我在SE上找到了其他答案,说我需要继承NSView或NSWindow类.是否有可能在不这样做的情况下获得关键事件?

提前致谢.

编辑:除了接受的答案,从NSViewController Swift - Capture keydown是一个伟大,明确的解决方案.

cocoa

8
推荐指数
1
解决办法
4799
查看次数

标签 统计

cocoa ×1