override func keyDown(with event: NSEvent) {
switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) {
case [.command] where event.characters == "9":
print("command-9")
case [.command] where event.keyCode == 123:
print("command-left arrow") // problem: this never executed
default:
break
}
}
以上是我尝试过的。 command-9 的作用就像一个魅力。但是命令-箭头不起作用。
看起来,如果你按命令-箭头,修饰符标志不是命令。我在互联网上搜索但无法使其工作。
最佳答案
您可以将代码分为两步,检查是否先单击了 command,然后检查 keyCode
的 switch
:
if event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.command) {
switch event.keyCode {
case 123:
print("command-left arrow")
case 124:
print("command-right arrow")
case 125:
print("command-down arrow")
case 126:
print("command-up arrow")
default:
break
}
}
当单击命令 - 向左箭头时,将会打印出来。
更新
要仅限于命令+箭头键,请使用此if语句
:
if event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.command) &&
!event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.option) &&
!event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.control) &&
!event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.function) &&
!event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.shift) &&
!event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.capsLock) {
}
关于swift - 如何在 Swift 3 Cocoa 应用程序中检测命令 + 箭头键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44340447/