从addLocalMonitorForEventsMatchingMask:block返回nil不会抑制事件

时间:2011-11-26 07:33:43

标签: objective-c macos cocoa nsevent

以下代码不会抑制我的应用中的鼠标拖动:

[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
   return (NSEvent *)nil;
}];

我仍然可以在应用内拖动UI元素。据我所知,如果您在块内返回nil,则不会将该事件分派给该应用。我错过了什么?

1 个答案:

答案 0 :(得分:3)

我不太确定“拖动UI元素”是什么意思,但我怀疑the docs中的这个注释:

  

您的处理程序不会被嵌套事件跟踪循环所占用的事件调用,例如控制跟踪,菜单跟踪或窗口拖动......

是解释。各种NSResponder子类,例如点击它们时的按钮,输入"private tracking loop",它们会抓取所有事件,直到它们收到一个特别是结束循环的事件。

您应该在该块中放置一条日志语句,并确保您实际上在预期时传入了一个事件。

相关问题