NSWindow восстанавливается не всегда работает

Я проверил возможность восстановления в моем NSWindow. Когда я перемещаю свое приложение, изменяю его размер и закрываю / открываю мое приложение, оно устанавливает размер и позицию окна в последний размер и положение.

но это происходит не на каждом компьютере, где я его тестирую. это случается только с несколькими компьютерами

у них нет специальных настроек относительно резюме.

У кого-нибудь есть опыт с этим?

3 ответа

Решение

Но это происходит не на каждом компьютере, где я его тестирую. Это происходит только с несколькими компьютерами. У них нет специальных настроек относительно резюме.

На самом деле, они делают. Загляните в Системные настройки> Общая панель. Должна быть опция "Закрыть окна при выходе из приложения", которая отвечает за поведение при восстановлении. Кроме того, в OS X Mountain Lion Apple изменила поведение по умолчанию, и теперь приложение восстанавливает свое состояние, только когда вы выходите с помощью Command-Option-Q.

Таким образом, вы, вероятно, должны проверить, какая версия OS X установлена ​​на другом Mac, и какая настройка выбрана на панели "Общие". Надеюсь это поможет!

Одна вещь, которую вы должны знать, это то, что проверка опции "Restorable" в IB изменяет только свойство окна. Фактическое восстановление и сохранение в ваших руках.

Во-первых, вы должны соответствовать NSWindowDelegate протокол и реализовать -window:willEncodeRestorableState:state а также -window:didDecodeRestorableState: методы, которые кодируют и декодируют ваши свойства окна (например, ваш фрейм окна, который вы, очевидно, получаете, вызывая [myWindow frame]).

Вы также должны соответствовать NSWindowRestoration протокол и реализовать +restoreWindowWithIdentifier:state:completionHandler:, (убедитесь, что вы установили свой класс на класс восстановления, с setRestorationClass метод)

Для получения дополнительной, более подробной информации, вы можете посетить этот документ документации Apple здесь.

Если все, что вам нужно, это восстановить рамку окна, используйте setFrameAutosaveName:,

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/WinPanel/Tasks/SavingWindowPosition.html

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