我有这个应用程序,它在系统状态栏中显示一个项目,其中一个项目是带有NSTextField和NSButton的自定义 View 。当用户单击状态栏项目时,它显示菜单,用户输入一些文本并按下按钮。这将触发显示窗口的操作。
我现在遇到的问题是,当按下按钮时,它确实触发了操作,但是菜单仍然可见。我想隐藏菜单,因为操作已被处理。
我已经搜索了API,但是找不到如何执行此操作。
有任何想法吗?
这就是我创建菜单的方式:
NSStatusBar *bar = [NSStatusBar systemStatusBar];
self.statusItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[statusItem setImage:[NSImage imageNamed:@"icon_status_bar.png"]];
[statusItem setHighlightMode:YES];
NSMenuItem *textInputItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
[textInputItem setView:myCustomView]; // created on the Nib file...
NSMenu *menu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"statusBarMenuTitle", @"")];
[menu addItem:textInputItem];
[statusItem setMenu:menu];
[textInputItem release];
[menu release];
最佳答案
在docs中不是很明显,但是[menu cancelTracking]
是您想要的。
cancelTracking
Dismisses the menu and ends all menu tracking.
- (void)cancelTracking