swift - 检测 UIKIt for Mac 的应用程序最小化事件?

标签 swift macos mac-catalyst uikitformac

当我最小化应用程序时 applicationDidEnterInBackground 未调用 Mac Catalyst。经过一番搜索后,我发现 Mac Catalyst 没有调用后台委托(delegate)方法,而是调用了场景委托(delegate)的前台方法。

有什么方法可以跟踪或处理像 NSWindowDelegate 这样的最小化委托(delegate)方法吗?

谢谢

最佳答案

好吧,如果你检查 NSWindowDelegate.windowWillMiniaturize:你会注意到它的参数只是一个通知(它的名字是 NSWindowWillMiniaturizeNotification)。

因此,您可以简单地观察该通知,以便在应用中的窗口即将最小化时收到通知:

NotificationCenter.default.addObserver(forName: NSWindow.willMiniaturizeNotification, object: nil, queue: nil) { notification in
    print("This window is about to be minimized:", notification.object)
}

您也可以执行相同的操作以获得有关其他事件的通知,例如:

  • NSWindow.didMiniaturizeNotification:窗口最小化后。
  • NSWindow.didDeminiaturizeNotification:在窗口恢复/去最小化之后。
  • NSWindow.willEnterFullScreenNotification:进入全屏之前。
  • NSWindow.didEnterFullScreenNotification:进入全屏后。
  • NSWindow.willExitFullScreenNotification:退出全屏之前。
  • NSWindow.didExitFullScreenNotification:退出全屏后。

完整的通知列表 here .

关于swift - 检测 UIKIt for Mac 的应用程序最小化事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59951112/

相关文章:

macos - Homebrew 的 `git` 未使用完成

swift - 在 Mac Catalyst 中使用文档浏览器 View Controller

python - Python 中的 Swift Optionals(或 Haskell 的 Maybe)?

swift - 这叫什么回调?

Xcode 给出 "spotlight quit unexpectedly"错误消息

SwiftUI 文本动画不透明度不起作用

ios - 如何在 Swift 中加粗字符串的一部分?

ios - 相机按钮不工作

ios - Mac Catalyst 错误 : Cannot override 'paymentQueue' which has been marked unavailable

ios - AVAudioEngine 在 macOS/iOS 上协调/同步输入/输出时间戳