我正在开发一个框架,该框架旨在添加到本机 macOS 应用程序中,以便它可以将事件发布到应用程序的事件队列中以响应触摸屏事件。为了正常工作,它需要知道当前应用程序内拖放操作何时开始。 (它不需要知道在系统内其他任何地方启动的拖放操作。)
有什么办法可以做到吗?
到目前为止,我已经检查过是否有任何相关通知发布到应用程序的共享通知中心,但没有取得任何成果。我愿意使用 Objective-C 方法调配,但如果可能的话我宁愿避免这种情况。
目前我找到的方法是使用 Objective-C method swizzling,将这三个方法替换为一个调用我的回调函数然后调用原始方法的函数:
dragImage:at:offset:event:pasteboard:source:slideBack:
于 NSWindow
dragImage:at:offset:event:pasteboard:source:slideBack:
于 NSView
beginDraggingSessionWithItems:event:source:
于 NSView
我不能 100% 确定它会捕获每个拖放操作,但它捕获了我迄今为止测试过的所有拖放操作。