gpt4 book ai didi

macos - 获取 NSStatusItem 框架更改的通知?

转载 作者:行者123 更新时间:2023-12-03 16:12:34 24 4
gpt4 key购买 nike

在使用 NSStatusItem 和自定义 View 的应用程序中,如下所示:

enter image description here

...您如何在以下情况下收到通知:

  1. 由于全屏应用,状态栏被隐藏
  2. 由于添加/删除/调整了另一个项目/调整了另一个项目,状态项目移动了位置?

当项目改变位置时,两者都是将自定义 View 移动到正确位置所必需的。

最佳答案

有一个方法-[NSStatusItem setView:]。当您为状态项设置自定义 View 时,该 View 会自动插入到特殊的状态栏窗口中。您可以使用方法 -[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}}
}

每次状态栏变得可见或隐藏以及移动图标时,您都会收到通知。这是您更新弹出面板位置的机会。

关于macos - 获取 NSStatusItem 框架更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com