Как сделать приложение Menubar с NSPopover?
Я видел много приложений с Элементом Menubar или приложений только с интерфейсом Menubar.
В Интернете есть несколько уроков и материалов, показывающих, как этого добиться. Но дело в том, что в них есть только кликабельные индексные строки.
Я хотел бы, чтобы NSPopover появлялся, когда вы щелкаете по значку / элементу меню. Кто-нибудь знает, как это сделать?
1 ответ
Я не знаю, можно ли это сделать с помощью стандартного элемента строки состояния. Используя пользовательский вид для меню, это относительно просто.
Создайте элемент строки состояния с настраиваемым представлением:
item = [[NSStatusBar systemStatusBar] statusItemWithLength:thickness];
view = [[CustomView alloc] initWithFrame:(NSRect){.size={thickness, thickness}}];
[item setView:view];
Ваш пользовательский вид должен обнаруживать щелчки мыши:
- (void)mouseDown:(NSEvent *)event {
...
}
И наконец, в какой-то момент после обнаружения щелчка мышью, показать / скрыть всплывающее окно.
if (/* menulet is active */) {
[popover showRelativeToRect:/* menulet view frame */
ofView:/* menulet view */
preferredEdge:NSMinYEdge];
} else {
[popover performClose:nil];
}
Вам нужно немного NSWindow, чтобы заставить текстовые поля работать внутри поповера.
Я подготовил минимальный проект Xcode с этими идеями и небольшим количеством клея: PopoverMenulet.