objective-c - OSX/ cocoa : Listening for system wide mouse drag events

标签 objective-c macos cocoa events listener

您好,我是 Cocoa 编程的新手,想知道如何为系统范围的事件(例如鼠标拖动)创建监听器。我已将其添加到我的应用程序中(我在另一篇文章中看到了它):

static CGEventRef eventFunction(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
    printf("event triggered\n");
    return event;
}

但它从未被调用过,我不确定我应该在哪里注册回电。

最佳答案

监视全局鼠标事件的最简单方法是使用 NSEvent 类方法 addGlobalMonitorForEventsMatchingMask:handler:

例子:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask 
                                       handler:^(NSEvent *event) {
    NSLog(@"Dragged...");
}];

请注意,这仅适用于其他 应用程序,要在您自己的应用程序中获取这些事件,您必须添加一个额外的本地 事件处理程序。

关于objective-c - OSX/ cocoa : Listening for system wide mouse drag events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608314/

相关文章:

macos - Apple SidebarDemo 的奇怪行为

ios - 无法快速符合 objective-c 协议(protocol)

swift - NSCollectionView 在同一点呈现所有 NSCollectionViewItems

ios - cordova/ios/hybrid 应用程序 - UITableView 加载项目不正确且无序

python - 有没有办法在 MacOS 上为 st_dev 获得有意义的挂载点?

windows - glext.h 的问题

swift - 如何从 Xcode 项目(Cocoa App)从 Mac 打开应用程序

Swift ViewController 不响应 -getFile,无法连接操作,目标类

ios - 无法将应用程序设置为仅限 iPhone

ios - SpriteKit Gravity和Velocity在不同设备上速度不一致