可以取消addGlobalMonitorForEventsMatchingMask的通知吗?

时间:2011-02-21 21:04:17

标签: objective-c cocoa macos

我有简单的鼠标点击全局监控器:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask handler:^(NSEvent *event){
    if ([event type] == NSLeftMouseDown) {
        [self mouseDown];
        if (self.lockMouse) {
            // Cancel event
        }
    }
}];

有没有办法取消全局鼠标事件,所以点击只会通知我的应用程序? I.e。:在“锁定”时单击屏幕上的任何按钮(不属于我的应用程序)后,事件会转到此处,但不会转到光标下方的按钮。类似于JavaScript中的event.preventDefault()。

1 个答案:

答案 0 :(得分:3)

没有这个API,没有。从文档中可以看出该块是:

  

事件处理程序块对象。它被传递给监视器。您无法更改事件,只需观察它即可。

如果您想截取事件并阻止其传播,则需要使用CGEventTap代替。