3

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

有什么方法可以跟踪或处理最小化委托方法NSWindowDelegate吗?

谢谢

4

1 回答 1

2

好吧,如果你检查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:退出全屏后。

完整的通知列表在这里

于 2020-08-08T15:15:27.383 回答