2011-04-11 144 views
10

我有這個應用程序顯示系統狀態欄中的一個項目,其中一個項目是帶有NSTextField和NSButton的自定義視圖。當用戶點擊狀態欄項目時,它顯示菜單,用戶輸入一些文本並按下按鈕。這會觸發顯示窗口的操作。從NSStatusItem以編程方式隱藏NSMenu

現在我遇到的問題是,當按鈕被按下時,它會觸發該操作,但菜單仍然可見。我想隱藏菜單,因爲操作已經被處理。

我已經通過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]; 

回答

21

這不是在docs明顯,但[menu cancelTracking]是你想要的。

cancelTracking 
Dismisses the menu and ends all menu tracking. 
- (void)cancelTracking 
+0

謝謝!我從來沒有發現它的名字... – 2011-04-11 14:58:04

相關問題