11

如何检测用户何时打开 OS X Mountain Lion 通知中心?

是否有我可以观察到的 NSNotification (呃,非常相似的不同事物的术语)?

4

1 回答 1

0

我不知道任何官方记录的解决方案或通知(让我知道!),但是当我测试它时,这似乎有效(至少在 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");
    }
}

让我知道这是否适合您。

没关系 - 在重新启动/注销 + 重新登录后,ToolboxMessageEventData 似乎发生了变化。

于 2015-04-17T17:21:48.100 回答