以下代码不会抑制我的应用中的鼠标拖动:
[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
return (NSEvent *)nil;
}];
我仍然可以在应用内拖动UI元素。据我所知,如果您在块内返回nil
,则不会将该事件分派给该应用。我错过了什么?
答案 0 :(得分:3)
我不太确定“拖动UI元素”是什么意思,但我怀疑the docs中的这个注释:
您的处理程序不会被嵌套事件跟踪循环所占用的事件调用,例如控制跟踪,菜单跟踪或窗口拖动......
是解释。各种NSResponder
子类,例如点击它们时的按钮,输入"private tracking loop",它们会抓取所有事件,直到它们收到一个特别是结束循环的事件。
您应该在该块中放置一条日志语句,并确保您实际上在预期时传入了一个事件。