每个人都很好,我在他们自己的ViewController中,我希望能够确定用户是按住Shift键盘还是Command键。请熟悉的朋友告诉我,我应该如何实现。谢谢你多!
答案 0 :(得分:1)
解决此问题的一种方法是使用本地事件监视器(described here)。
此方法监视您要求的类型的所有事件。因此,例如,您可以使用它来获得所有按键通知,如下所示:
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
每次按下一个键时,这将为您提供NSEvent
的实例(每次实际按下该键时,还会释放一个.keyUp,该键在释放时触发)。
然后NSEvent类有一组ModifierFlags
,您可以查询并查看这些修改器中是否有一个或多个按下了键。因此,您的keyDown
方法(覆盖NSResponder
中的方法)可能会执行以下操作:
override func keyDown(with event: NSEvent) {
if event.modifierFlags.contains(.shift) {
print("Shift pressed")
}
if event.modifierFlags.contains(.command) {
print("Command pressed")
}
super.keyDown(with: event)
}
import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
override func keyDown(with event: NSEvent) {
if event.modifierFlags.contains(.shift) {
print("Shift pressed")
}
if event.modifierFlags.contains(.command) {
print("Command pressed")
}
super.keyDown(with: event)
}
}
希望对你有所帮助。