窗口关闭后不会恢复

the*_*ude 7 cocoa

当我从Xcode启动我的OS X应用程序时,它应该是应该的.

当我关闭窗口时,它会消失(如您所料),并且应用程序仍然在Dock上显示为活动状态.

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

有任何想法吗?

Mon*_*olo 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 只是票,谢谢@Monolo - 记住“关闭时释放”选项在 IB 中未勾选,否则将导致调用“makeKeyAndOrderFront”时发生崩溃 (2认同)

ZYi*_*iOS 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
}
Run Code Online (Sandbox Code Playgroud)