3

我想使用UISceneSession生命周期的委托方法来帮助通知我的 Mac Catalyst 应用程序,当用户将他们的焦点从应用程序(窗口)移开然后回到应用程序(窗口)时。

当应用程序首次在 Mac 上启动sceneWillEnterForeground并被sceneDidBecomeActive成功调用时,但是当我专注于另一个应用程序时,则委托诸如sceneWillEnterForeground未调用的方法。为什么?

4

1 回答 1

9

如果你检查一下NSWindowDelegate.windowDidBecomeMain(_:),你会注意到它的参数是一个名为 的通知NSWindowDidBecomeMainNotification

因此,您可以观察该通知,以便在您的应用程序中的一个窗口成为焦点时收到通知:

NotificationCenter.default.addObserver(forName: .init("NSWindowDidBecomeMainNotification"), object: nil, queue: nil) { notification in
    print("This window became focused:", notification.object)
}

当您的应用程序中的窗口失去焦点时,您还可以观察NSWindowDidResignMainNotification以获取通知。

于 2020-08-15T18:02:50.107 回答