检查 u 键是否被按下 Swift Cocoa

Check if the u key is pressed Swift Cocoa

我正在尝试检测 U 键是否被按下,如果是,它应该 print("BUT...BUT.."); 但我不确定如何检查不同的键,因为按键文档非常糟糕。我找到了一个带有键码的答案,但它们只适用于 QWERTY 键盘

viewcontroller.swift

override func viewDidLoad(){
    super.viewDidLoad();
    let f = Foo();
    f.doSonethimg();
}

override func keyDown(theEvent: NSEvent){
    let f = Foo();
    f.KeyDown(theEvent);
}

Foo.swift

public func doSonething(){
    print("Hello from Dylib");
}

public func keyDown(event: NSEvent){
        if let keyString = theEvent.charactersIgnoringModifiers where keyString == "u" || keyString == "U" {
    Swift.print("BUT...BUT…")
}
}

我如何更改 keyDown 函数来响应 U 以及它的默认键是什么?

我看过 - and https://superuser.com/questions/399430/mouse-button-and-keypress-counter-for-mac-os-x

另见 - https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html - 覆盖 keyDown: 方法

您可以使用 NSEvents charactersIgnoringModifiers 属性.

轻松检查字符
func keyDown(theEvent: NSEvent) {
    if let keyString = theEvent.charactersIgnoringModifiers where keyString == "u" || keyString == "U" {
        Swift.print("BUT...BUT…")
    }
}

注意:检查 'u' 和 'U' 是有区别的。它们由 Shift 修改。因此,如果您想让两者都得到认可,请检查两者。 (如上例)

响应者链
keyDown 函数仅在视图或 viewController 参与所谓的 Responder Chain.

时调用

要将您的 viewController 设置为响应链的一部分,请阅读以下内容 documentation