NSStatusItem
次のようなカスタムビューでを使用するアプリの場合:
...次の場合に通知を受け取るにはどうすればよいですか。
- フルスクリーンアプリのため、ステータスバーが非表示になります
- 別のアイテムが追加/削除/サイズ変更されたため、ステータスアイテムが位置を移動しますか?
アイテムが場所を変更したときにカスタムビューを正しい位置に移動するには、両方が必要です。
NSStatusItem
次のようなカスタムビューでを使用するアプリの場合:
...次の場合に通知を受け取るにはどうすればよいですか。
アイテムが場所を変更したときにカスタムビューを正しい位置に移動するには、両方が必要です。
方法があり-[NSStatusItem setView:]
ます。ステータスアイテムにカスタムビューを設定すると、このビューは特別なステータスバーウィンドウに自動的に挿入されます。そして、メソッド-[NSView window]
を使用してそのウィンドウにアクセスし、そのウィンドウを監視できますNSWindowDidMoveNotification
。
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
NSStatusItem *statusItem = [self newStatusItem];
NSView *statusItemView = [self newStatusItemView];
statusItem.view = statusItemView;
NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter];
[dnc addObserver:self selector:@selector(statusBarDidMove:)
name:NSWindowDidMoveNotification object:statusItemView.window];
}
- (void)statusBarDidMove:(NSNotification *)note
{
NSWindow *window = note.object;
NSLog(@"%@", NSStringFromRect(window.frame)); // i.e. {{1159, 900}, {24, 22}}
}
ステータスバーが表示または非表示になるたび、およびアイコンが移動されるたびに通知が届きます。これは、ポップアップパネルの場所を更新するチャンスです。