NSWindow restorable并不总是有效

And*_*obs 7 macos cocoa objective-c nswindow nswindowrestoration

我检查了我的NSWindow上的可恢复选项当我移动我的应用程序并更改其大小并关闭/重新打开我的应用程序时,它将窗口大小和位置设置为最后的大小和位置

但是在我测试它的每台计算机上都不会发生这种情况.它只发生在几台电脑上

他们没有关于简历的特殊设置.

有没有人有这方面的经验?

Vad*_*dim 24

但是在我测试它的每台计算机上都不会发生这种情况.它只发生在几台电脑上.他们没有关于简历的特殊设置.

实际上,他们这样做.查看"系统首选项">"常规"窗格.应该有一个名为"退出应用程序时关闭窗口"的选项,它负责恢复行为.此外,在OS X Mountain Lion中,Apple更改了默认行为,现在应用程序仅在您使用Command-Option-Q退出时才恢复其状态.

因此,您可能应该检查在另一台Mac上安装了哪个OS X版本,以及在"常规"窗格中选择了哪个首选项.希望这可以帮助!

  • 我真的希望我们有办法检查该复选框的状态. (2认同)
  • 实际上,我们_可以_查询此复选框的状态: `[[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"]` 或 `UserDefaults.standard.bool(forKey: "NSQuitAlwaysKeepsWindows")` 获取复选框的_inverse_。也就是说,如果未选中该框,则用户默认值是“true”。 (2认同)

rie*_*333 5

您应该知道的一件事是检查 IB 中的“可恢复”选项只会更改窗口属性。实际的恢复和保存在您的手中。

首先,您必须遵守NSWindowDelegate协议并实现 对您的窗口属性进行编码和解码的 -window:willEncodeRestorableState:state-window:didDecodeRestorableState:方法(例如您的窗口框架,您显然可以通过调用 获得[myWindow frame])。

您还需要遵守NSWindowRestoration协议并实施+restoreWindowWithIdentifier:state:completionHandler:. (确保您使用该setRestorationClass方法将您的课程设置为恢复课程)

有关其他更深入的信息,您可以在此处访问此 Apple 文档文档