gpt4 book ai didi

objective-c - NSBorderlessWindowMask 如果不是最前面的窗口,窗口将不会显示 NSPanels

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

我有一个使用 NSBorderlessWindowMask 和 kCGDesktopWindowLevel 设置的窗口。当 NSPanel 应该从 Dock 图标菜单或状态栏项目菜单的选择中出现时,如果应用程序不是最前面的窗口,则 NSPanel 将不会显示。

所以这个程序此时只有一个状态菜单项(想想 QuickSilver 是如何实现的),当我从菜单中选择“首选项”时,它被设置为使用 Makekeyandorderfront 显示首选项面板,但是除非您刚刚启动该应用程序没有做任何其他事情,当您选择“首选项”时,什么也没有发生。

我发现,当我选择 Sparkle 检查更新的菜单项时,会出现检查更新面板,然后会出现我告诉打开的首选项面板。

所以看起来 makekeyandorderfront 或许并没有真正把它带到前面。

有人知道如何解决这个问题吗?我应该调用 makekeyandorderfront 之外的其他内容,还是与其结合使用?

提前致谢

最佳答案

面板默认设计为以这种方式工作。它们被设计为应用程序的辅助窗口,并在应用程序停用时始终消失。您可能还会遇到面板成为关键的问题...但要解决面板消失的问题,请将此消息发送到您的面板:

[panelObject setHidesOnDeactivate:NO];

您可能应该在这里使用实际的 NSWindow 对象而不是 NSPanel 对象,但由于我不太了解您的应用程序的工作原理,因此您必须自己研究一下。有关面板和窗口之间差异的更多信息,请查看此处的文档:Window Programming Guide

关于objective-c - NSBorderlessWindowMask 如果不是最前面的窗口,窗口将不会显示 NSPanels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310511/

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