NSWindow restorable并不总是有效

时间:2012-10-08 10:17:46

标签: objective-c macos cocoa nswindow nswindowrestoration

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

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

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

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

3 个答案:

答案 0 :(得分:23)

  

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

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

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

答案 1 :(得分:2)

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

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

您还需要符合NSWindowRestoration协议并实施+restoreWindowWithIdentifier:state:completionHandler:。 (确保使用setRestorationClass方法将类设置为恢复类)

有关其他更深入的信息,您可以访问this Apple Documentation document here

答案 2 :(得分:1)

如果你想要的只是恢复窗口的框架,请使用setFrameAutosaveName:

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