窗口关闭后不会恢复

时间:2012-08-24 14:17:20

标签: cocoa

当我从Xcode启动我的OS X应用程序时,它看起来应该是这样。

当我关闭窗口时,它会消失(正如您所期望的那样),并且该应用程序仍然在Dock上显示为活动状态。

太棒了,应该是这样的。但是,当我单击停靠栏激活窗口时,它不会显示。

有什么想法吗?

2 个答案:

答案 0 :(得分:22)

问题中没有太多信息,但让我假设该应用是一个单窗口应用(即,不是基于NSDocument)。

此场景中的典型情况是用户关闭窗口,并且应用程序将继续按照Dock中的图标运行。

在这种情况下,用户通常会希望通过单击Dock中的图标激活应用程序时窗口重新显示。

要获得这一点,您可以按如下方式实施applicationShouldHandleReopen:hasVisibleWindows:

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)visibleWindows
{   
    if ( visibleWindows ) {
        [self.window orderFront:self];
    }
    else {
        [self.window makeKeyAndOrderFront:self];
    }

    return YES;
}

答案 1 :(得分:5)

对于swift:

func applicationShouldHandleReopen(sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
    if let window = sender.windows.first {
        if flag {
            window.orderFront(nil)
        } else {
            window.makeKeyAndOrderFront(nil)
        }
    }

    return true
}