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



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

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

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

我不太确定你所说的"拖动UI元素"是什么意思,但我怀疑文档中的这条注释:

对于嵌套事件跟踪循环(如控件跟踪、菜单跟踪或窗口拖动)所使用的事件,将不会调用处理程序…

是解释。各种NSResponder子类,如按钮,当他们被点击,进入一个"私人跟踪循环",他们抓住所有的事件,直到他们收到一个特别的结束循环。

你应该在该块中放入一个日志语句,并确保你确实在预期的时候得到了一个传入的事件

最新更新