Как открыть окно при нажатии на NSStatusItem?

Я новичок в какао, поэтому, пожалуйста, извините меня за любые глупые ошибки, которые я делаю. У меня есть NSStatusItem, который я хочу использовать для открытия меню. Однако, насколько я знаю и слышал о разных формах, без пользовательского представления вы ограничены только всплывающим меню. Это правда? И если да, то как сделать пользовательский вид, чтобы что-то делать (например, открыть окно в моем случае)? Спасибо за любую помощь.


person Luke    schedule 26.03.2011    source источник


Ответы (1)


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

// This goes where you set up the status item
NSStatusItem *statusItem; // You need to get this from the status bar
[statusItem setTarget:self];
[statusItem setAction:@selector(openWindow:)];

// This method is called when the status item is clicked
- (void)openWindow:(id)sender {
    NSWindow *window = [self window]; // Get the window to open
    [window makeKeyAndOrderFront:nil];
}

Вы также можете вызвать [NSApp activateIgnoringOtherApps:nil]; в свой метод openWindow:, чтобы убедиться, что открываемое вами окно не находится за окном какого-либо другого приложения.

person ughoavgfhw    schedule 26.03.2011
comment
Спасибо! Теперь работает отлично :) - person Luke; 26.03.2011
comment
Спасибо за вклад, я резюмировал это в сообщении блога jademind. com/blog/posts/show-nswindow-below-your-nsstatusitem еще раз - person anka; 30.04.2013