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, это должно работать.

Другие вопросы по тегам