下面的代码不能在我的应用程序中抑制鼠标拖动:
[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
return (NSEvent *)nil;
}];
我仍然能够在应用程序中拖动UI元素。据我所知,如果你在块内返回nil
,事件将不会被分派到应用程序。我错过了什么?
我不太确定你所说的"拖动UI元素"是什么意思,但我怀疑文档中的这条注释:
对于嵌套事件跟踪循环(如控件跟踪、菜单跟踪或窗口拖动)所使用的事件,将不会调用处理程序…
是解释。各种NSResponder
子类,如按钮,当他们被点击,进入一个"私人跟踪循环",他们抓住所有的事件,直到他们收到一个特别的结束循环。
你应该在该块中放入一个日志语句,并确保你确实在预期的时候得到了一个传入的事件