2011-04-11 8 views
10

से एनएसएमएनयू प्रोग्रामेटिक रूप से छुपाएं मेरे पास यह एप्लिकेशन है जो सिस्टम की स्टेटस बार में कोई आइटम दिखाता है, और आइटम में से एक एनएसटीक्स्टफिल्ड और एनएसबटन के साथ एक कस्टम व्यू है। जब उपयोगकर्ता स्टेटस बार आइटम पर क्लिक करता है, तो यह मेनू दिखाता है, उपयोगकर्ता कुछ टेक्स्ट इनपुट करता है और बटन दबाता है। यह एक क्रिया को ट्रिगर करता है जो एक विंडो प्रदर्शित करता है।NSStatusItem

अब समस्या जो मैं कर रहा हूं, जब बटन दबाया जाता है तो यह क्रिया को ट्रिगर करता है, लेकिन मेनू दिखाई देता है। मैं मेनू को छिपाना चाहता हूं, क्योंकि कार्रवाई पहले ही संसाधित हो चुकी है।

मैंने एपीआई के माध्यम से खोज की है, लेकिन यह नहीं मिल सका।

कोई विचार?

यह मैं कैसे मेनू बना रहा हूं है:

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

धन्यवाद! मैं इसे उस नाम से कभी नहीं मिला होता ... –

संबंधित मुद्दे