0

我已经为 Mac 桌面创建了一个应用程序,它正在运行,但 Apple 拒绝了它,因为当我们运行该应用程序并使用“X”关闭它时,尽管应用程序图标仍然存在,但我们无法从 Dock 重新打开它但它没有再次打开应用程序,我正在努力的主要问题是“如果我们关闭应用程序,那么在菜单栏中没有打开它的选项”我见过的其他应用程序就是这样做的。

我应该怎么办?

4

3 回答 3

4

这是 Swift 3 的答案:

符合视图控制器类中的 NSWindowDelegate 。然后通过覆盖以下方法隐藏窗口而不是关闭它。

self.view.window?.delegate = self

func windowShouldClose(_ sender: Any) -> Bool {
    NSApplication.shared().hide(self)
    return false
}

然后在停靠栏中单击应用程序图标时取消隐藏应用程序。

func applicationDidBecomeActive(_ notification: Notification) {
    NSApplication.shared().unhide(self)
}
于 2017-02-24T07:21:17.727 回答
1

要为红色 (x) 按钮实现简单的显示/隐藏功能,请将您的 App Delegate 类也设为主窗口的窗口代理。

然后在其中添加以下代码:

- (BOOL)windowShouldClose:(id)sender {
    [[NSApplication sharedApplication] hide:self];

    return NO;
}

- (void)applicationDidBecomeActive:(NSNotification *)notification {
    [[NSApplication sharedApplication] unhide:self];
}
于 2012-09-07T10:01:05.537 回答
0

我为 swift 5/Xcode 10 准备的 2 个证书

注意:您也可以在 ViewController 中调用这些方法(如果有用),以防止在 NASWindow/NSView-Controller 之间拆分代码。在这种情况下:

class ViewController: NSViewController, **NSWindowDelegate**
{

...

override func viewWillAppear() {
    // we choose to delegate ourselves. must be done here, in viewDidLoad window is nil
    let window = self.view.window
    window!.delegate = self
}

...

不需要通过自我.. :(根据上面的其他人。)

   func windowShouldClose(_ sender: NSWindow) -> Bool {

        NSApplication.shared.hide(nil)

        return false // prevent closing.
    }


    func applicationDidBecomeActive(_ notification: Notification) {
        NSApplication.shared.unhide(nil)
    }
于 2019-08-18T05:31:02.690 回答