跟踪用户何时返回应用程序或将焦点从Mac Catalyst窗口移开

问题描述

我想使用UISceneSession生命周期的委托方法来帮助我的Mac Catalyst应用程序在用户将焦点移离该应用程序(窗口)然后又回到该应用程序(窗口)时通知我。

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

解决方法

如果选中NSWindowDelegate.windowDidBecomeMain(_:),您会注意到其参数是一个名为NSWindowDidBecomeMainNotification的通知。

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...