【问题标题】:Cocoa How to remember the window position with multiple monitors?Cocoa 如何记住多个显示器的窗口位置?
【发布时间】:2015-07-30 18:24:20
【问题描述】:
要保存一个(主)监视器的窗口位置,我正在使用此代码:
[[win windowController] setShouldCascadeWindows:NO];
[win setFrameAutosaveName:@"My App"];
它工作正常。
但是,如果我连接第二台显示器并将我的应用程序窗口拖到第二台显示器,可可自动保存不起作用 - 重新启动后,窗口总是放在主(主)显示器上。
有任何想法吗?
谢谢!
【问题讨论】:
标签:
objective-c
xcode
macos
cocoa
nswindow
【解决方案1】:
为您的应用启用恢复:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[[NSUserDefaults standardUserDefaults] setObject:@YES forKey:@"NSQuitAlwaysKeepsWindows"];
}
将您的窗口设置为可在 Interface Builder 中恢复
还要确保您没有在关闭时调用 invalidate。这只是承诺->您可能会以已删除状态结束应用程序
[self.window invalidateRestorableState];
验证/调试检查“~/Library/Saved Application State/yourbundleidentifier”的内容是否在重启后仍然存在。