4

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

4

2 回答 2

7

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
    }
}
于 2013-01-16T03:30:06.237 回答
0

我不确定您所说的“手动”检查是什么意思。该flagsChanged:方法给你一个NSEvent*,你可以传递一个modifierFlags消息。

于 2013-01-15T03:10:42.837 回答