gpt4 book ai didi

cocoa - 在单击 _statusItem 时执行操作,使用 NSMenu 并且窗口未处于焦点似乎是不可能的

转载 作者:行者123 更新时间:2023-12-03 17:47:47 26 4
gpt4 key购买 nike

SO 上也有类似的问题,但这有一个转折。

当用户单击菜单栏上的应用程序图标时,我需要触发一个操作。该操作是将其窗口置于前面,换句话说,

  [[[NSApplication sharedApplication] keyWindow] makeKeyAndOrderFront:self];

通常我会这样做:

[_statusItem setTarget:self];
[_statusItem setAction:@selector(bringToFront:)];

但是这个_statusItem有一个NSMenu

如果我禁用菜单,则会触发 bringToFront:

所以我想,我将实现 NSMenuDelegate 方法 menuWillOpen

- (void)menuWillOpen:(NSMenu *)menu {
[[[NSApplication sharedApplication] keyWindow] makeKeyAndOrderFront:self];
}

但是有一个问题。如果应用程序窗口是选定的窗口,则这将起作用,但假设应用程序正在运行并且我选择 safari。然后,我的应用程序窗口不再处于焦点状态,位于 2000 个 Safari 窗口后面。现在,我单击菜单栏上的应用程序图标,并且 menuWillOpen 将不会被触发。

如果我想通过单击菜单栏上的应用程序图标来使窗口聚焦,那么必须使窗口聚焦才能使其工作没有意义。

最佳答案

NSApplication 通知是为了响应您的应用获得/退出事件状态而发布的。处理这些通知并启用/禁用状态项的菜单,以便当您的应用程序位于后台时调用您的操作。

关于cocoa - 在单击 _statusItem 时执行操作,使用 NSMenu 并且窗口未处于焦点似乎是不可能的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124846/

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