NSTextField от NSStatusitem
Есть ли способ заставить NSPopover появляться, когда пользователь нажимает на NSStatusitem в строке состояния?
пока в моем заголовке у меня есть это:
IBOutlet NSStatusItem *statusitem;
и это:
@property (assign) IBOutlet NSPopover *pop;
По методу, у меня есть это:
[[NSImage imageNamed:@"mic.png"]setSize:NSMakeSize(20,20)];
statusitem = [[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
[statusitem setHighlightMode:YES];
[statusitem setImage:[NSImage imageNamed:@"mic.png"]];
[statusitem setMenu:menu];
[statusitem setAction:@selector(pop:)]
а также
- (void)pop:(id)sender{
[[self pop]showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}
Есть ли способ заставить это работать?
1 ответ
Решение
Это довольно близко к правильности. Ваше свойство statusItem должно быть сохранено, а не IBOutlet, поскольку вы создаете его в коде. Кроме того, у вас не может быть и меню, и действия для вашего элемента состояния - если у вас есть меню, оно будет открываться при нажатии на элемент состояния, а не при использовании метода действия. Итак, если вы вносите эти изменения, и у вас есть настройки popover в IB, это должно работать.