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 - arrow,修饰符标志就不是command了。我在互联网上搜索,但无法让它工作。
4条答案
按热度按时间k4aesqcs1#
您可以将代码分为两步,并检查是否先单击command,然后单击
keyCode
的switch
:单击命令-左箭头时将打印出来。
更新
要限制为仅使用命令+箭头键,请使用此
if-statement
:rslzwgfq2#
Swift 5解决方案- * 以下代码也适用于Mac Catalyst*
lyr7nygr3#
如果只关心是否为键盘事件按下了Command键,而不考虑任何其他修饰符,则可以使用以下命令
[from用Xcode 13.3编写的Swift MacOS应用程序]
xtfmy6hx4#
我已经找到了一个替代解决方案,它根本不需要代码!.
因为我正在编写一个可可应用程序,所以为操作添加菜单项是常见的做法。
当创建菜单项时,我可以简单地设置它的“关键字等效项”。