Могу ли я открыть NSMenu программно?

Как следует из названия, я хочу автоматически открывать меню через определенные промежутки времени. Предпочтительно из самой программы, так как я уверен, что смогу что-то сделать вручную с помощью applescripts+cron, которые я не хочу использовать.

Я говорю о меню/кнопке/независимо от строки меню OSX. Просто быть чистым. Никаких пользовательских представлений, просто обычное nsmenu.


person jontelang    schedule 03.06.2015    source источник


Ответы (2)


Для открытия меню NSStatusItem мне было проще вызвать метод performClick для кнопки, принадлежащей NSStatusItem. Таким образом, мне не нужно было беспокоиться о правильной передаче события или представления в popUpContextMenu. Что-то вроде этого:

statusItem.button?.performClick(nil)
person Ryan H    schedule 30.07.2018
comment
Это будет выглядеть так: statusItem.button?.performClick(nil) - person bjunix; 09.11.2019

Вы можете программно показать NSMenu, вызвав:

[NSMenu popUpContextMenu:YOUR_MENU withEvent:MOUSE_EVENT forView:YOUR_VIEW]

Чтобы создать событие, вы можете использовать NSEvent +mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:

Примечание: если ваше меню представляет собой меню NSStatusItem, вам нужно будет настроить вид элемента, чтобы меню было всплывающим.

person Guilherme Rambo    schedule 12.09.2015