检测 Mac 的 UIKIt 应用程序最小化事件?
Detect application minimize event for UIKIt for Mac?
当我最小化应用程序时 applicationDidEnterInBackground
未调用 Mac Catalyst。经过一番搜索后,我发现 Mac Catalyst 没有调用后台委托方法,而是调用了场景委托的前台方法。
是否有任何方法可以跟踪或处理像 NSWindowDelegate
这样的最小化委托方法?
谢谢
嗯,如果你检查 NSWindowDelegate.windowWillMiniaturize:
,你会注意到它的参数只是一个通知(它的名字是 NSWindowWillMiniaturizeNotification
)。
因此,只要您的应用程序中的 window 即将最小化,您只需观察该通知即可收到通知:
NotificationCenter.default.addObserver(forName: NSWindow.willMiniaturizeNotification, object: nil, queue: nil) { notification in
print("This window is about to be minimized:", notification.object)
}
您也可以执行相同操作以获取有关其他事件的通知,例如:
NSWindow.didMiniaturizeNotification
:window最小化后
NSWindow.didDeminiaturizeNotification
:window之后就是restored/deminimized.
NSWindow.willEnterFullScreenNotification
: 进入全屏前
NSWindow.didEnterFullScreenNotification
:进入全屏后
NSWindow.willExitFullScreenNotification
: 退出全屏前
NSWindow.didExitFullScreenNotification
: 退出全屏后
完整的通知列表here。
当我最小化应用程序时 applicationDidEnterInBackground
未调用 Mac Catalyst。经过一番搜索后,我发现 Mac Catalyst 没有调用后台委托方法,而是调用了场景委托的前台方法。
是否有任何方法可以跟踪或处理像 NSWindowDelegate
这样的最小化委托方法?
谢谢
嗯,如果你检查 NSWindowDelegate.windowWillMiniaturize:
,你会注意到它的参数只是一个通知(它的名字是 NSWindowWillMiniaturizeNotification
)。
因此,只要您的应用程序中的 window 即将最小化,您只需观察该通知即可收到通知:
NotificationCenter.default.addObserver(forName: NSWindow.willMiniaturizeNotification, object: nil, queue: nil) { notification in
print("This window is about to be minimized:", notification.object)
}
您也可以执行相同操作以获取有关其他事件的通知,例如:
NSWindow.didMiniaturizeNotification
:window最小化后NSWindow.didDeminiaturizeNotification
:window之后就是restored/deminimized.NSWindow.willEnterFullScreenNotification
: 进入全屏前NSWindow.didEnterFullScreenNotification
:进入全屏后NSWindow.willExitFullScreenNotification
: 退出全屏前NSWindow.didExitFullScreenNotification
: 退出全屏后
完整的通知列表here。