2013-03-09 5 views
12

ユーザがOS X Mountain Lion Notification Centerを開いたときを検出するにはどうすればよいですか?ユーザがOS X通知センターを開いたときを検出する方法は?

私は観察することができるNSNotification(ugh、非常に似た言葉は別のもの)ですか?

+0

私はこれが '[[NSScreen mainScreen] visibleFrame]'をチェックすることで実現できると考えていましたが、これは通知センターの引き出し(OS X 10.9)には調整されていないようです。 – pkamb

+0

あなたはこれに対する解決策を見つけましたか? – WCByrne

答えて

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"); 
    } 
} 

それがあなたのために働くかどうか私に教えてください。

Nevermind - 再起動/ログオフ+ログイン時に、ToolboxMessageEventDataが変更されるように見えます。

関連する問題