У меня возникли трудности с правильной работой моего NSPopover. StatusItem появляется в строке состояния и выделяется щелчком, но popover не отображается.Objective-C Статус NSPopoverItem не открывается
Вот структура моего кода.
@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
Я потянулся к Гэвину, и он сумел помочь мне, отправив мне свой проект xCode, и это дало мне некоторое представление. Но наш код соответствует, мой не работает, и он это делает.
Любые идеи?
Опишите, пожалуйста, ошибку. – Paco
Насколько я могу судить, с кодом ничего не получается. Он просто не появляется, когда по какой-то причине щелкнут statusItem. Когда он щелкнут, он должен отправить уведомление и вызвать класс itemClicked. –