10.15中的PrefPane不会重新打开外部窗口

问题描述

“我的首选窗格”为每个显示器打开一个窗口,类似于“显示器首选面板”的工作方式。首次启动时,操作系统会调用mainViewDidLoad到我的initWithWindowNibName上,以便在其中打开外部窗口。效果很好。

然后在willUnselect中,我为每个外部窗口调用[window orderOut:self];,它们正确隐藏了。例如,如果用户从我的PrefPane切换到声音或网络PrefPane,则会发生这种情况。

当他们回到我的PrefPane时,我得到willSelect并致电:

[window orderWindow:NSWindowAbove relativeto:0];

调用不再起作用(它在10.14.6和更低版本的所有版本中都可以使用,并且可能在10.15的早期版本中可以使用,但肯定在10.15.6中已中断)。

我尝试使用其他方法来隐藏/显示包含[window setIsVisible:]的窗口,但是恢复该窗口没有任何作用。

我认为这可能与该博客讨论的内容有关

https://www.noodlesoft.com/blog/2019/08/28/preference-panes-and-catalina/

有人看到过此消息或知道解决方法吗?

解决方法

使用 Apple DTS 后,这是预期行为,因为 PrefPanes 现在在单独的进程中运行,并且该进程不希望窗格打开其他窗口。

仍然可以在 didSelect 中打开/关闭窗口,但这更多的是副作用,从长远来看可能不起作用。我们已决定将我们的软件从“系统偏好设置”中移到常规应用程序中,以确保长期兼容性。