2011-04-11 4 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

감사합니다. 나는 그 이름으로 그것을 결코 발견하지 못했을 것이다 ... –

관련 문제