我正在尝试检测是否按下了命令键,而我的一生都找不到下面的错误所在。我重写了一个视图来提供下面的代码:
- (void)flagsChanged:(NSEvent *)theEvent {
NSLog(@"flags changed in %@", self);
BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask);
if (commandKeyPressed)
NSLog(@"command key in %@", self);
}每当我按下命令键时,我都会看到"flags changed“消息,但没有看到"command key in”消息。我遗漏了什么?
发布于 2013-01-25 03:04:57
BOOL是signed char,所以当您将int转换为BOOL时,除了低8位之外,所有的位都会被去掉。在你的例子中,非零位不在低8位。相反,你可以这样说
BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask) != 0;或者只是
if ([theEvent modifierFlags] & NSCommandKeyMask)https://stackoverflow.com/questions/14508140
复制相似问题