V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
ChrisFreeMan
V2EX  ›  iDev

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

  •  
  •   ChrisFreeMan · 2022-05-15 18:17:17 +08:00 · 3814 次点击
    这是一个创建于 683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样我做了一个 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)
            }
          
        }
    
    objectxiang
        1
    objectxiang  
       2022-05-15 20:25:31 +08:00
    其实不用,在 AppDelegate 里去 handleReopen 的回调,回调里面把你的主窗口重新显示就行了。
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       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
        3
    ChrisFreeMan  
    OP
       2022-05-15 20:27:31 +08:00
    @objectxiang 刚解决了,谢谢朋友的回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3218 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:38 · PVG 19:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.