Ответ 1
Я не знаю какого-либо официально зарегистрированного решения или уведомления (дайте мне знать!), но это оказалось работать (по крайней мере, на OS X 10.10), когда я его протестировал, если мое приложение было в на переднем плане/было самое раннее окно, которое я считаю.
Добавьте свой объект в качестве наблюдателя:
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCenterOpened:) name:@"com.apple.HIToolbox.beginMenuTrackingNotification" object:nil];
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCenterClosed:) name:@"com.apple.HIToolbox.endMenuTrackingNotification" object:nil];
Добавьте к вашему объекту методы, аналогичные приведенным ниже, чтобы убедиться в правильности номера ToolboxMessageEventData
(4927
), например:
- (void)notificationCenterOpened:(NSNotification*)notification {
if ([notification.userInfo[@"ToolboxMessageEventData"] isEqual: @4927]) {
NSLog(@"Notification center opened");
}
}
- (void)notificationCenterClosed:(NSNotification*)notification {
if ([notification.userInfo[@"ToolboxMessageEventData"] isEqual: @4927]) {
NSLog(@"Notification center closed");
}
}
Сообщите мне, если это работает или не работает для вас.
Nevermind - после перезапуска/выхода из системы + войдите в систему, появляется ToolboxMessageEventData.