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