我想使用UISceneSession
生命周期的委托方法来帮助通知我的 Mac Catalyst 应用程序,当用户将他们的焦点从应用程序(窗口)移开然后回到应用程序(窗口)时。
当应用程序首次在 Mac 上启动sceneWillEnterForeground
并被sceneDidBecomeActive
成功调用时,但是当我专注于另一个应用程序时,则委托诸如sceneWillEnterForeground
未调用的方法。为什么?
我想使用UISceneSession
生命周期的委托方法来帮助通知我的 Mac Catalyst 应用程序,当用户将他们的焦点从应用程序(窗口)移开然后回到应用程序(窗口)时。
当应用程序首次在 Mac 上启动sceneWillEnterForeground
并被sceneDidBecomeActive
成功调用时,但是当我专注于另一个应用程序时,则委托诸如sceneWillEnterForeground
未调用的方法。为什么?
如果你检查一下NSWindowDelegate.windowDidBecomeMain(_:)
,你会注意到它的参数是一个名为 的通知NSWindowDidBecomeMainNotification
。
因此,您可以观察该通知,以便在您的应用程序中的一个窗口成为焦点时收到通知:
NotificationCenter.default.addObserver(forName: .init("NSWindowDidBecomeMainNotification"), object: nil, queue: nil) { notification in
print("This window became focused:", notification.object)
}
当您的应用程序中的窗口失去焦点时,您还可以观察NSWindowDidResignMainNotification
以获取通知。