7

我在打开以获取用户参数的 NSPanel 上有几个复选框和文本字段。作为一个选项,我希望用户能够在按下任何复选框时按住选项键来设置/取消设置面板上的所有复选框。

当用户单击按钮时,我不确定在哪里/如何检查键盘在做什么。

4

8 回答 8

19

检查[NSEvent modifierFlags] ...

if ([NSEvent modifierFlags ] & NSAlternateKeyMask)
{
    //do something
}
于 2013-05-13T23:48:18.773 回答
4

只是我的 2c,一个 Swift 3 版本:

if NSEvent.modifierFlags().contains(NSEventModifierFlags.command) {
    print("Bingo")
}

可以在NSEventModifierFlags.

于 2016-10-28T11:24:28.947 回答
1

更新:NSAlternateKeyMask现已弃用。改为使用NSEventModifierFlagOption

有关所有修饰符标志的完整概述,请参阅NSEventModifierFlags

于 2019-04-30T16:33:13.463 回答
0

斯威夫特 4:

func optionKeyPressed() -> Bool
{        
    let optionKey = NSEvent.modifierFlags.contains(NSEvent.ModifierFlags.option)
    return optionKeyPressed
}

if optionKeyPressed()
{
    print ("option key pressed")
}
于 2019-08-19T07:34:30.093 回答
0

斯威夫特 2.2:

if NSEvent.modifierFlags().contains(.AlternateKeyMask) {
    print("Option key pressed")
}
于 2016-07-05T17:53:32.643 回答
0

在 macOS 10.14 上,当从 ObjC 中的 NSGestureRecognizerDelegate 方法调用时,[NSEvent modifierFlags]总是为我返回 0,无论哪些键被关闭。我能够通过使用[NSApp currentEvent]而不是可靠地解决这个问题NSEvent

- (BOOL)isOptionKeyDown {
    NSEventModifierFlags keyEventFlags = [[NSApp currentEvent] modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;
    return (keyEventFlags & NSEventModifierFlagOption) != 0;
}
于 2019-09-27T00:49:24.307 回答
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!")
    }
}
于 2021-04-18T04:32:43.043 回答
0

它适用于使用 swift 并为此苦苦挣扎的人。

if NSEvent.modifierFlags.rawValue & NSEvent.ModifierFlags.command.rawValue != 0 {
    // to do something.
}
于 2016-05-09T06:00:10.267 回答