以下代码不会抑制我的应用程序中的鼠标拖动:
[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
return (NSEvent *)nil;
}];
我仍然可以在应用程序内拖动 UI 元素。据我所知,如果您在 block 内返回 nil
,该事件将不会被分派(dispatch)到应用程序。我错过了什么?
最佳答案
我不太确定“拖动 UI 元素”是什么意思,但我怀疑 the docs 中的这条注释:
Your handler will not be called for events that are consumed by nested event-tracking loops such as control tracking, menu tracking, or window dragging...
是解释。各种 NSResponder
子类,例如单击按钮时,输入 "private tracking loop"他们抓取所有事件,直到收到一个结束循环的特定事件。
您应该在该 block 内放置一条日志语句,并确保您确实在预期时收到了传入的事件。
关于objective-c - 从 addLocalMonitorForEventsMatchingMask 返回 nil : block doesn't suppress events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277000/