我正在尝试检测是否按下了命令键,并且我一生都无法弄清楚以下内容出了什么问题。 我已经覆盖了一个视图以提供以下代码:
- (void)flagsChanged:(NSEvent *)theEvent {
NSLog(@"flags changed in %@", self);
BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask);
if (commandKeyPressed)
NSLog(@"command key in %@", self);
}
每当我按下命令键时,我都会看到"标志已更改"消息,但没有看到"命令键输入"消息。 我错过了什么?
BOOL
是一个signed char
,所以当你把一个int
转换为一个BOOL
时,你省掉了除了低8位之外的所有位。 在您的情况下,非零位不在低 8 位中。 相反,说
BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask) != 0;
或者只是
if ([theEvent modifierFlags] & NSCommandKeyMask)