2015-01-29 5 views
1

NSPopover를 제대로 작동시키지 못합니다. 상태 표시 줄에 statusItem이 나타나고 클릭시 강조 표시되지만 팝업이 표시되지 않습니다.Objective-C NSPopover statusItem not opening

내 코드의 구조는 다음과 같습니다.

@property (strong, nonatomic) NSStatusItem *statusItem; 
@property (strong, nonatomic) NSEvent *popoverTransiencyMonitor; 
@property (weak, nonatomic) IBOutlet NSPopover *popover; 
@property (weak, nonatomic) IBOutlet NSView *popoverView; 


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
    self.statusItem.highlightMode = YES; 
    [self.statusItem.image setTemplate:YES]; 
    self.statusItem.action = @selector(itemClicked:); 
} 

-(void)itemClicked:(id)sender { 
    [[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge]; 

    if (self.popoverTransiencyMonitor == nil) { 
     self.popoverTransiencyMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask | NSRightMouseDownMask | NSKeyUpMask) handler:^(NSEvent* event) { 
      [NSEvent removeMonitor:self.popoverTransiencyMonitor]; 
      self.popoverTransiencyMonitor = nil; 
      [self.popover close]; 
     }]; 
    } 
} 

StackOverflow, Gavin에서 다른 사람의 도움을 받았으며 그 도움이 여기에 있습니다. NSPopover transiency when popover is in status bar

나는 Gavin에게 손을 내밀었고, 그는 그의 xCode 프로젝트를 보내 나를 도와 주었다. 그리고 나에게 약간의 통찰력을 주었다. 그러나 우리의 코드는 일치하고, 내 것은 작동하지 않으며, 그의 코드는 작동합니다.

아이디어가 있으십니까?

+0

코드에 무엇이 잘못되었는지 자세히 설명해 주시겠습니까? – Paco

+0

내가 알 수있는 한, 코드에는 아무런 문제가 없습니다. 어떤 이유로 statusItem을 클릭했을 때 팝업되지 않습니다. 클릭하면 알림을 보내고 itemClicked 클래스를 호출해야합니다. –

답변

0

이것은 약간 당황 스럽지만 문제는 내가 스토리 보드를 사용하는 프로젝트를 만들었고 NSPopover가 어떤 이유로 든 작동하지 않는다는 것입니다.

미안 해요.