求助大佬, SwiftUI 在 MacOS 上怎么覆盖鼠标点击关闭窗口事件,为隐藏窗口

2022-05-15 18:17:17 +08:00
 ChrisFreeMan

是这样我做了一个 App ,并有状态栏( Status bar Menu )菜单功能, 我点击这个状态栏按钮的时候选择隐藏或者展示主窗口,但是如果主窗口被手动点击 x 关掉就不顶用了,所以我想着覆盖掉关闭窗口为隐藏窗口,求助各位大佬。

我用了 AppDelegate 去构建状态栏菜单,这是我处理显示和隐藏主窗口的代码

    @objc func menuButtonAction(sender: AnyObject){
        if NSApp.isHidden{
            NSApp.unhide(nil)
            NSApp.activate(ignoringOtherApps: true)
        }else{
            NSApp.hide(nil)
        }
      
    }
3987 次点击
所在节点    iDev
3 条回复
objectxiang
2022-05-15 20:25:31 +08:00
其实不用,在 AppDelegate 里去 handleReopen 的回调,回调里面把你的主窗口重新显示就行了。
ChrisFreeMan
2022-05-15 20:26:59 +08:00
问题解决了😵‍💫,翻遍全网居然在知乎上找到了答案, AppDelegate 先继承协议 NSWindowDelegate

func applicationDidFinishLaunching(_ notification: Notification) {
mainWindow = NSApp.windows[0]
mainWindow!.delegate = self
setUpMacMenu()
}

func windowShouldClose(_ sender: NSWindow) -> Bool {
NSApp.hide(nil)
return false
}
ChrisFreeMan
2022-05-15 20:27:31 +08:00
@objectxiang 刚解决了,谢谢朋友的回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852995

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX