众所周知,applicationDidBecomeActive会在我们打开和关闭底部控制中心/顶部通知中心时调用。
但我想知道 applicationDidBecomeActive 何时仅因为这两个事件,以便在用户打开和关闭通知中心或控制中心时处理某些功能。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if(/*Code for DidBecomeActive Called Because of Contol Center*/ --- )
{
}
if(/*Code for DidBecomeActive Called Because of Notification Center*/)
{
}
}
谁帮我看看
由于通知中心调用了 DidBecomeActive 的代码
由于控制中心调用了 DidBecomeActive 的代码
最佳答案
我不确定您能否完全实现您想要的 - 但您可以接近。当您向下拉通知中心(或向上拉控制中心,或输入 App Switcher)时,您将获得:
applicationWillResignActive
关闭面板并返回到应用程序将调用:
applicationDidBecomeActive
现在 完全后台化应用程序改为调用此序列:
applicationWillResignActive
applicationDidEnterBackground
并重新打开应用调用:
applicationWillEnterForeground
applicationDidBecomeActive
所以您需要做的就是使用一个标志来跟踪序列:
@property (nonatomic, readwrite) BOOL wasControlCenter;
- (void)applicationWillResignActive:(UIApplication *)application {
_wasControlCenter = YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
_wasControlCenter = NO;
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
_wasControlCenter = NO;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
if (_wasControlCenter) {
// Do your thing
}
}
不幸的是,我认为没有办法区分控制中心、通知中心、应用程序切换器等。
关于ios - 如何仅在 applicationDidBecomeActive 中触发 "Notification Center or Control Center"时检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265646/