PrefPane в 10.15 не будет повторно открывать внешние окна
My Pref Pane открывает окно для каждого дисплея, аналогичное тому, как работает Displays PrefPane. При первом запуске ОС вызывает мойmainViewDidLoad
где я открываю внешние окна, используя initWithWindowNibName
. Это прекрасно работает.
Затем в willUnselect
, Я звоню [window orderOut:self];
для каждого внешнего окна, и они правильно скрываются. Это произойдет, например, если пользователь переключится с моей PrefPane на Sound или Network 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/
Кто-нибудь видел это или знает исправление?
1 ответ
После работы с Apple DTS такое поведение является ожидаемым, поскольку PrefPanes теперь запускается в отдельном процессе, и этот процесс не ожидает, что панели будут открывать дополнительные окна.
В didSelect по-прежнему можно открывать / закрывать окна, но это скорее побочный эффект, который может не сработать в долгосрочной перспективе. Мы решили вывести наше программное обеспечение из системных настроек в обычное приложение, чтобы обеспечить долгосрочную совместимость.