swift - NSView keyDown/keyUp 忽略 Swift 中的特定键。如何让它监听所有按键?

标签 swift macos cocoa keyboard appkit

这段代码是我写的。我的问题是, keyDown 函数仅监听某些键(字母、数字、空格、字符、Tab。)。但是,它完全忽略 caps lock⇧ ShiftControl 等键。我怎样才能让它听这些按键?

class GameClient: NSView {
    override var acceptsFirstResponder: Bool {
        return true
    }
    override func keyDown(with event: NSEvent) {
        print(event.keyCode)
    }
    override func keyUp(with event: NSEvent) {

    }
}

建议的欺骗中的答案并不能完全回答我的问题。我不想查看在按下 A 时是否按下了 ⇧ Shift,我想检测何时单独按下 ⇧ Shift ,例如。

最佳答案

问题是如何捕获独立的 Shift 键事件,而不是检测是否在另一个键按下时按下 Shift 键。您想要执行此操作:

override func flagsChanged(with event: NSEvent) {
    print(event.keyCode)
}
override func keyDown(with event: NSEvent) {
    print(event.keyCode)
}
override func keyUp(with event: NSEvent) {

}

关于swift - NSView keyDown/keyUp 忽略 Swift 中的特定键。如何让它监听所有按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60062349/

相关文章:

ios - 添加单元格后 TableView 自动滚动行为异常

python - 如何在没有打开任何窗口的情况下更改 wxPython 中的 OSX 菜单栏?

Java 应用程序在终端 shell 中运行?

objective-c - 将变量传递给 AppleScript

objective-c - CGContextRef到底是什么?

macos - Swift: undefined symbol :iTunesApplication

swift - 如何在 Swift 3.0 中使用 UIWebView 请求网页的桌面版本?

swift - 如何在 addtarget UIButton 中添加类方法?

ios - Swift - 编码 URL

objective-c - Xcode 的隐藏功能