每当用户启动应用时,我想恢复 Cocoa 应用的窗口位置。此功能默认在 Cocoa 中实现。但是,我还想通过点击工具栏左上角的red x
button来终止我的应用,因此我在AppDelegate.swift
中写了以下内容:
func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
return true
}
这会通过点击red x
button立即退出应用。但是,如果您以这种方式终止应用程序,则下次打开应用程序时窗口不会恢复到之前的状态。
为什么通过关闭窗口终止应用程序时应用程序无法恢复?即使用户通过关闭窗口终止应用程序,我该如何恢复?
答案 0 :(得分:0)
你可以用两种方式做到这一点
1)当窗口代表触发关闭时,您可以将窗口的框架保存为plist,并在窗口再次打开时重新定位该框架中的窗口。
2)这样的方式就像Zeppenwolf评论一样,你可以将NO返回给windowShouldClose并在延迟时间内调用app终止。
答案 1 :(得分:0)
基于Zeppenwolf的评论,我在NSWindowDelegate
- (BOOL)windowShouldClose:(NSWindow *)sender {
[[NSOperationQueue currentQueue] addOperationWithBlock:^{
[NSApp terminate:sender];
}];
return NO;
}