在NSView flagsChanged中获取准确的修饰键状态

时间:2013-01-14 20:42:42

标签: objective-c macos cocoa nsview

我在NSView中使用flagsChanged在按下或释放修改键时触发事件。但是,我不太明白如何在发生这种情况时获得密钥的实际新状态,而不是手动检查每个修改键的状态。我目前正在使用自己的状态数组来检查它,但这似乎是错误的并且不可靠。我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:4)

只需针对您感兴趣的各种修饰键掩码,检查传递到flagsChanged:的事件:

- (void)flagsChanged:(NSEvent *)theEvent {
   if (([theEvent modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask) {
       // Do something based on the alt/option key being pressed
    } else if (([theEvent modifierFlags] & NSCommandKeyMask) == NSCommandKeyMask){
       // Do something based on the command key being pressed
    }
}

答案 1 :(得分:0)

通过“手动”检查,我不确定你的意思。 flagsChanged:方法为您提供了NSEvent*,您可以传递modifierFlags条消息。