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

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

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

они неУ него нет специальных настроек, касающихся резюме.

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

Ответы на вопрос(3)

Если все, что вы хотите, это восстановить окноиспользование кадра.setFrameAutosaveName:

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

Решение Вопроса

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

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

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

 Jonathan Brown26 мая 2016 г., 19:25
Отличный ответ! не мог»не понимаю, почему это не будетне восстановить до этого
 Keith Smiley12 апр. 2013 г., 19:57
Мне бы очень хотелось, чтобы у нас был способ проверить состояние этого флажка.
 DarkDust23 нояб. 2017 г., 14:50
На самом деле, мыМожно запросить состояние этого флажка:[[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"] или жеUserDefaults.standard.bool(forKey: "NSQuitAlwaysKeepsWindows") получаетобратный из флажка. То есть, если флажок снят, значением по умолчанию для пользователя является.true

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

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

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

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

 Andy Jacobs11 окт. 2012 г., 11:22
Я сделал это, и на моем компьютере это работает. Я поместил отчет в этот метод, и он отлично записывается, но на моего партнеракомпьютер (который неразработчик (я создал отладочную сборку)не работает, и оператор журнала нене показывай ..

Ваш ответ на вопрос