2011-10-12 10 views
8

私はNSStatusItemを使用するアプリを持っています。小さな画面では、ステータスバーにはスペースがあまりありません。ユーザーが多くのメニュー項目を含むアプリケーションに切り替えると、ステータス項目が非表示になります。これについて通知を受ける方法はありますか?NSStatusItemが隠されているときに告知されています

  • 任意のNSNotificationが発射された場合、私がチェック::私がこれまで試したどのような

  • statusViewがビュー階層から削除された場合、私がチェック:いいえ
  • 私はisHiddenOrHasHiddenAncestorチェック:いいえ

ステータス項目の作成に使用するコードは次のとおりです。

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease]; 
[statusItem setTitle:@"Ma Status Item"]; 
[statusItem setView:maView]; 
+0

画面から離れてview.centerプロパティが変更されるかどうかテストできますか? centerプロパティにKVO通知を追加してコールバックの種類を設定することは可能かもしれませんが、statusItemに対して機能するかどうかはわかりません。 – Suz

+0

また、ウィンドウを基準に境界を記録するタイマーを実行しています。変化しない... maViewがそれ自身のウィンドウ(NSWindow> NSNextStepFrame> maView)にあるようです。これが画面外に移動したかどうか試してみる。 – stigi

+0

ウィンドウ境界もまだ画面に表示されています。ウィンドウには他のものが重なっているかもしれません。しかし、これをチェックする方法を知らない。 – stigi

答えて

1

それは、ステータスアイテムが隠されているとき、そのウィンドウがバックグラウンドに移動されますことを実現するために、あなたのかなりスマートです。

は今、あなたが探しているの通知は、次のとおりです。 NSWindowDidResignKeyNotification (またはNSWindowDidResignMainNotificationアプリケーションのコンテキストに応じて)キーウィンドウと、メインウィンドウの違いについて明確な説明のために

thisを参照してください。

+0

この回答はうまくいかない、-1、NSStatusItemが隠されているとき、その並べ替えの通知は送信されない – Vervious

+0

-1:私は2番目の@Vervious - この答えは役に立たないよりも悪いので、作業。 – ArtOfWarfare

関連する問題