Подтвердить что ты не робот

Как определить, когда пользователь открывает Центр уведомлений OS X?

Как определить, когда пользователь открывает Центр уведомлений о горном льве OS X?

Есть ли NSNotification (ugh, очень похожий термин для другой вещи), который я могу наблюдать?

4b9b3361

Ответ 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.