关于修改器标志更改的全局监控出现了一个特殊问题。
假设监视器如下...
_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] is 0 and [event modifierFlags] is 0
问题:
为什么 [event modifierFlags] 返回不同的值,特别是 256 时没有持有修饰符?
为什么三指窗口移动手势导致[event modifierFlags]改变-256?
我认为它可能与大写锁定有关,但我不确定为什么 class 和 ivar modifierFlags 返回不同的结果。
我在 10.7.3。