我在NSPanel上有一些复选框和文本字段,打开以获取用户参数。 作为一个选项,我希望用户能够在按任意复选框时按住选项键来设置/取消设置面板上的所有复选框。
当用户点击按钮时,我不确定在哪里/如何检查键盘正在做什么。
答案 0 :(得分:15)
检查[NSEvent modifierFlags] ...
if ([NSEvent modifierFlags ] & NSAlternateKeyMask)
{
//do something
}
答案 1 :(得分:2)
只是我的2c,一个Swift 3版本:
if NSEvent.modifierFlags().contains(NSEventModifierFlags.command) {
print("Bingo")
}
可以在NSEventModifierFlags
的文档中看到其余标志。
答案 2 :(得分:0)
对于那些使用swift并挣扎于此的人来说。
if NSEvent.modifierFlags.rawValue & NSEvent.ModifierFlags.command.rawValue != 0 {
// to do something.
}
答案 3 :(得分:0)
Swift 2.2:
if NSEvent.modifierFlags().contains(.AlternateKeyMask) {
print("Option key pressed")
}
答案 4 :(得分:0)
更新:NSAlternateKeyMask
已被弃用。请改用NSEventModifierFlagOption
。
有关所有修饰符标志的完整概述,请参见NSEventModifierFlags。
答案 5 :(得分:0)
迅速4:
bool
答案 6 :(得分:0)
在macOS 10.14上,从ObjC中的NSGestureRecognizerDelegate方法调用时,[NSEvent modifierFlags]
总是为我返回0,无论按下了什么键。通过使用[NSApp currentEvent]
而不是NSEvent
,我能够可靠地解决此问题。
- (BOOL)isOptionKeyDown {
NSEventModifierFlags keyEventFlags = [[NSApp currentEvent] modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;
return (keyEventFlags & NSEventModifierFlagOption) != 0;
}
答案 7 :(得分:0)
Swift 5 - 也有助于区分 Option 键的“向上”和“向下”按下
override func flagsChanged(with event: NSEvent) {
print(event)
if event.keyCode == 58 && event.modifierFlags.contains(NSEvent.ModifierFlags.option){
print("Option Key is down!")
}
else if(event.keyCode == 58)
{
print("Option Key is up!")
}
}