macOS開發-如何讓用戶在點擊關閉按鈕時退出App:applicationShouldTerminateAfterLastWindowClosed

最近本身盲擼了一個macOS應用,主要是爲了方便學生能更高清的看在下的教學視頻,摸爬滾打了一兩個月終於準備上線了,打包後又出現官方責任的bug了(習慣性崩潰):swift

用戶點擊窗口左上角關閉按鈕時沒法退出App,只是關閉了這個窗口,上面的菜單欄依舊還在,但我再點擊程序塢的App圖標時也恢復不了窗口(官方所說的默認行爲:隱藏App)

我並無對關閉按鈕作自定義,所有采用的是默認行爲。bash

可如今的效果是四不像,也不是關閉App,也不是隱藏App(相似於最小化)app

不能容忍。

大海撈針般找啊找啊,最後仍是在文檔裏找到了:ui

optional func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool
複製代碼

這是NSApplicationDelegate(App的生命週期相關)的一個方法,能夠說很形象了spa

用法:

在AppDelegate.swift文件裏,實現這個方法,返回true便可code

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    
    //...
    
    func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
        return true
    }
}
複製代碼

效果:

若是如今App僅剩一個窗口,用戶按左上角關閉按鈕時將退出整個App(等同於command+Q或右擊程序塢點退出),符合用戶習慣。cdn

ps:若是須要當用戶點擊關閉按鈕隱藏App功能的同窗能夠留言我。視頻

不知道爲何蘋果要畫蛇添足,macOS的世界,寒冬繼續。blog

相關文章
相關標籤/搜索