2011-04-11 11 views
10

'dan programlı olarak gizleme Bu uygulamanın, sistemin durum çubuğunda bir öğeyi gösteren bir uygulamasına sahip olduğumu ve öğelerin birinden bir NSTextField ve bir NSButton ile özel bir görünüm olduğunu. Kullanıcı durum çubuğu öğesini tıkladığında, menüyü gösterir, kullanıcı bir metin girer ve düğmeye basar. Bu, bir pencere görüntüleyen bir eylemi tetikler. düğmesine basıldığındaNSMenü'nü NSStatusItem

şimdi sahip olduğunu ediyorum sorun, bu işlemi tetikleyen yapar ama menü görünür kalır. Menüyü gizlemek istiyorum çünkü işlem zaten işlendi.

Ben API üzerinden arama yaptık, ancak bunu nasıl bulamadı.

Herhangi bir fikrin var mı?

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]; 

cevap

21

O docs belirgin değil ama [menu cancelTracking] istediğini geçerli:

Bu menüyü yaratıyorum nasıl.

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

Teşekkürler! Onu bu isimle asla bulamazdım ... –