OSX: Как «показать» элемент строки состояния? - PullRequest
5 голосов
/ 16 ноября 2011

Хорошо, у меня есть приложение меню состояния с элементом меню «Скрыть».

Нажатие на "Скрыть" звонки:

[[NSStatusBar systemStatusBar] removeStatusItem:statusItem]

, что, конечно, удаляет мое приложение из строки состояния, даже если оно все еще работает.

Я хочу, чтобы мое приложение повторно добавлялось в системную строку состояния, когда пользователь «открывает» мое приложение в папке «Приложения». Проблема в том, что я не могу вставить кусок кода для этого внутри ApplicationDidFinishLaunching, так как приложение уже открыто. Так что мне делать?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

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

0 голосов
/ 27 января 2013

Разве вы не можете просто инициализировать этот элемент состояния программно?Кажется, это работает для меня, даже вне приложения. Запуск запуска:

    // Install status item into the menu bar
myStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
NSImage *statusImage = [NSImage imageNamed:@"Status.png"];
[myStatusItem setImage:statusImage];
NSImage *altStatusImage = [NSImage imageNamed:@"StatusHighlighted"];
[myStatusItem setAlternateImage:altStatusImage];
[myStatusItem setHighlightMode:YES];
[myStatusItem setMenu:self.myStatusMenu];
[self.myStatusMenuItem setTitle:@"Show"];
...