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

Detect application minimize event for UIKIt for Mac?

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

是否有任何方法可以跟踪或处理像 NSWindowDelegate 这样的最小化委托方法?

谢谢

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

因此,只要您的应用程序中的 window 即将最小化,您只需观察该通知即可收到通知:

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

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

  • NSWindow.didMiniaturizeNotification:window最小化后
  • NSWindow.didDeminiaturizeNotification:window之后就是restored/deminimized.
  • NSWindow.willEnterFullScreenNotification: 进入全屏前
  • NSWindow.didEnterFullScreenNotification:进入全屏后
  • NSWindow.willExitFullScreenNotification: 退出全屏前
  • NSWindow.didExitFullScreenNotification: 退出全屏后

完整的通知列表here