objective-c - 当拖动操作在任何地方“开始”时,如何在 OS X 中收到通知?

标签 objective-c cocoa macos user-interface drag-and-drop

我想知道是否有任何方法可以让我的应用程序在屏幕上任何地方开始拖放操作时收到通知,即使我那里没有事件窗口。

我研究了普通的拖放 API,但没有发现任何可以执行此操作的内容。 NSDraggingDestination协议(protocol)以及 -[NSWindow/NSView registerForDraggedTypes:] 方法允许您注意到有人正在拖动某些东西并进入您的窗口,但我想在任何拖动操作发生时注意到它从屏幕上的任意位置开始。

关于如何解决这个问题有什么建议吗?是否有一个标准的 Cocoa API,或者是否有一个私有(private) API/某种肮脏的黑客来获取此信息?

提前致谢:)

最佳答案

看看NSEvent’s +addGlobalMonitorForEventsMatchingMask:handler: 。我不确定您是否可以跟踪鼠标拖动,但肯定可以跟踪鼠标按钮向上/向下事件。

关于objective-c - 当拖动操作在任何地方“开始”时,如何在 OS X 中收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912262/

相关文章:

objective-c - 变量损坏

iphone - 从 NSMutableArray 中删除特定键的项目

ios - 谁能解释一下绘制矩形和上下文动画?

cocoa - 我将如何更改对象的 (x,y) 位置

macos - AH00136 : Server MUST relinquish startup privileges before accepting connections. 请确保加载了 mod_unixd 或其他系统安全模块

ios - 提交表单时未使用表达式结果

cocoa - NSMenuItem 文本字段突出显示问题

objective-c - 在 Objective C 中格式化 float

objective-c - 为什么 CGWarpMouseCursorPosition 会导致延迟?如果不是,那是什么?

Mac OS X 10.8 上的 MySQL ODBC