2

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

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

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

4

1 回答 1

3

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

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

是解释。各种NSResponder子类,例如当它们被点击时的按钮,进入一个“私人跟踪循环”,在那里它们抓取所有事件,直到它们收到一个特别结束循环的事件。

您应该在该块内放置一条日志语句,并确保您实际上收到了按预期传递的事件。

于 2011-11-26T08:34:07.893 回答