0

我有一个应用程序在单击停靠图标 ( - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag)时会打开一个菜单

菜单“停止”当前线程的执行,直到它关闭。因此,我只接到applicationShouldHandleReopen:菜单关闭后的电话。

我认为使用计时器可以检查队列中是否存在此类方法调用。但这可能吗?还是有其他方法可以解决我的问题?(我想在第二次单击停靠图标时关闭我的菜单)

4

1 回答 1

0

我发现我的问题的解决方案:

我使用这段代码使用 Cocoa 的 Accessibility API获取我的应用程序的停靠图标的位置来访问我的停靠图标的位置和大小。

+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block然后使用带有掩码的 NSEvent NSLeftMouseUp,我设法捕捉到屏幕上的每一次点击

最后,我只需要检查我的点击是否与我的 dockIcon 的 CGRect 一起。(我不得不骗一点,因为菜单被关闭后,applicationShouldHandleReopen:因为我点击它而被调用)

于 2012-07-05T02:36:01.880 回答