MAAttachedWindow для NSStatusItem без пользовательского представления

У меня есть простое приложение с NSStatusItem, которое отображает только значок.

Теперь я хотел бы добавить функциональность, которая заставит MAAttachedWindow появиться под NSStatusItem.

Я видел демонстрационный код, предоставленный Matt Gemmel; код, который он использует для отображения MAAttachedWindow в NSStatusItem:

NSRect frame = [[self window] frame];
NSPoint pt = NSMakePoint(NSMidX(frame), NSMinY(frame));
[controller toggleAttachedWindowAtPoint:pt];

Вышеупомянутое делается в пользовательском представлении файла NSStatusItem. Однако мой NSStatusItem не имеет пользовательского представления. Как я могу добавить MAAttachedWindow в моем случае?


person houbysoft    schedule 21.01.2012    source источник


Ответы (2)


Вы не можете афаик. У вас должен быть способ получить координаты для присоединения окна, и единственный способ, которым я смог заставить это работать, - это использовать пользовательский вид, чтобы вы могли получить координаты при нажатии мыши, и единственный способ, которым я я видел, чтобы использовать свой собственный взгляд. Все остальное, вероятно, было бы немного хакерским, если бы не было способа получить представление для элемента состояния без пользовательского представления, и было бы нехорошо отображать MSAttachedWindow и меню.

Я просто решил сделать NSStatusitem с настраиваемым представлением и имитировать выбор, рисуя фоновый градиент при его выборе.

person Colin Wheeler    schedule 22.01.2012
comment
Вы можете использовать недокументированное -(NSWindow *)_window для элемента состояния, если, конечно, вы не планируете отправлять его в магазин. - person Curtis Hard; 06.05.2014

Рассматривали ли вы возможность использования NSPopover?

person Matthieu Riegler    schedule 09.09.2012