问题描述
我想使用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
以获得通知。