通过点击x按钮关闭窗口位置时不会恢复窗口位置?

时间:2015-02-01 10:00:00

标签: cocoa swift nswindow nsapplication

每当用户启动应用时,我想恢复 Cocoa 应用的窗口位置。此功能默认在 Cocoa 中实现。但是,我还想通过点击工具栏左上角的red x button来终止我的应用,因此我在AppDelegate.swift中写了以下内容:

func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
    return true
}

这会通过点击red x button立即退出应用。但是,如果您以这种方式终止应用程序,则下次打开应用程序时窗口不会恢复到之前的状态。

为什么通过关闭窗口终止应用程序时应用程序无法恢复?即使用户通过关闭窗口终止应用程序,我该如何恢复?

2 个答案:

答案 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;
}