众所周知,当我们打开和关闭底部控制中心/顶级Noficication中心时,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代码
答案 0 :(得分:2)
我不确定你能达到你想要的 - 但你可以近距离接触。当你向下拉动通知中心(或控制中心,或进入应用程序切换器)时,你会得到:
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
}
}
不幸的是,我认为没有办法区分控制中心,通知中心,App Switcher等。