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 по-прежнему можно открывать / закрывать окна, но это скорее побочный эффект, который может не сработать в долгосрочной перспективе. Мы решили вывести наше программное обеспечение из системных настроек в обычное приложение, чтобы обеспечить долгосрочную совместимость.

Другие вопросы по тегам