关于修改标志更改的全局监控,出现了一个特殊问题。
假设显示器如下......
_flagsChangedGlobalEventHandler = [NSEvent addGlobalMonitorForEventsMatchingMask:NSFlagsChangedMask
handler:^(NSEvent *event) {
NSLog(@"Global flags changed event");
NSLog(@"[NSEvent modifierFlags] is %i and [event modifierFlags] is %i",
[NSEvent modifierFlags], [event modifierFlags]);
}
最初,当按下左命令时,日志提供以下内容:
[NSEvent modifierFlags]为1048576,[event modifierFlags]为1048840
并在释放左命令后:
[NSEvent modifierFlags]为0且[event modifierFlags]为256
现在,在我使用标题栏区域上的三个手指按住MacBook上的窗口后,同一个显示器的结果如下:
[NSEvent modifierFlags]为1048576,[event modifierFlags]为1048584
并在释放左命令后: [NSEvent modifierFlags]为0,[event modifierFlags]为0
问题:
为什么[event modifierFlags]会返回不同的值,特别是当没有保存修饰符时为256?
为什么三指窗口移动手势导致[event modifierFlags]改变-256?
我认为它可能与大写锁定有关,但我不确定为什么类和ivar modifierFlags会返回不同的结果。
我在10.7.3。