在使用一个应用程序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}}
}
您将收到通知每一个状态栏变得可见的或隐藏的,当你的图标移动的时间。 这是你的机会来更新您的弹出面板的位置。