我有一个应用程序,当点击停靠栏图标(- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
)
菜单“停止”当前线程的执行,直到它关闭。因此,一旦菜单关闭,我只会收到applicationShouldHandleReopen:
的来电。
我认为使用计时器我可以检查队列中是否有这样的方法调用。但这可能吗?或者还有其他方法来处理我的问题? (我想在第二次点击停靠栏图标时关闭我的菜单)
答案 0 :(得分:0)
我发现问题的解决方案:
我使用此代码Getting the position of my application's dock icon using Cocoa's Accessibility API来访问我的停靠栏图标的位置和大小。
然后使用带有+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block
的NSEvent NSLeftMouseUp
作为掩码,我设法抓住屏幕上的每次点击
最后,我只需检查我的点击是否与我的dockIcon的CGRect有关。 (我不得不欺骗一下,因为在菜单被取消后,applicationShouldHandleReopen:
被调用,因为我点击了它)