【发布时间】:2012-07-05 00:39:20
【问题描述】:
我有一个应用程序在单击停靠图标时会打开一个菜单 (- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag)
菜单“停止”当前线程的执行,直到它关闭。因此,一旦菜单关闭,我只会收到applicationShouldHandleReopen: 的电话。
我认为使用计时器可以检查队列中是否存在此类方法调用。但这可能吗?还是有其他方法可以解决我的问题? (我想在第二次单击停靠图标时关闭菜单)
【问题讨论】:
-
不清楚您的问题是什么?不希望默认行为怎么办?每当用户在您的应用程序成为活动应用程序之前单击停靠图标时,都会调用
applicationShouldHandleReopen:方法。每当用户单击并按住或右键单击您的停靠图标时,都会显示您的应用程序的停靠菜单。显示菜单时再次单击停靠图标将关闭它,而不会将您的应用程序置于前台。您可以指定自定义项目出现在此停靠菜单中,但不能使用applicationShouldHandleReopen:。 -
对不起,我不够清楚:我使用了一个自定义菜单,单击左键时会显示。
-
我明白了。 Finder 和其他应用程序使用的标准右键单击 Dock 菜单自定义是否适合您? here 描述了向此菜单添加静态或动态菜单项。当用户左键单击时弹出一个类似 Dock 的菜单会让一些用户感到惊讶,并且会出现左键和右键单击呈现不同菜单的 UI 怪异。
标签: cocoa event-handling dock nsmenu