Подтвердить что ты не робот

Как создать приложение в меню с помощью NSPopover?

Я видел много приложений с элементом меню или приложениями только с интерфейсом меню.

В Интернете есть несколько учебных пособий и материалов, в которых показано, как это сделать. Но дело в том, что в них есть только кликабельные строки индексов.

Я бы хотел, чтобы NSPopover отображался, когда вы нажимаете значок/элемент меню. Кто знает, как это сделать?

4b9b3361

Ответ 1

Я не знаю, можно ли это сделать со стандартным элементом строки состояния. Использование пользовательского представления для меню очень легко.

Создайте элемент состояния с настраиваемым представлением:

item = [[NSStatusBar systemStatusBar] statusItemWithLength:thickness];
view = [[CustomView alloc] initWithFrame:(NSRect){.size={thickness, thickness}}];
[item setView:view];        

Ваше пользовательское представление должно обнаруживать щелчки мыши:

- (void)mouseDown:(NSEvent *)event {
   ...
}

И, наконец, в какой-то момент после обнаружения щелчка мыши отобразите/скройте popover.

if (/* menulet is active */) {
    [popover showRelativeToRect:/* menulet view frame */
                         ofView:/* menulet view */
                  preferredEdge:NSMinYEdge];
} else {
    [popover performClose:nil];
}

Вам нужно бит NSWindow swizzling, чтобы получать текстовые поля внутри popover.

Я подготовил минимальный проект Xcode с этими идеями и некоторым клеем: PopoverMenulet. p >