如何仅在"通知中心或控制中心"在applicationDidBecomeActive

时间:2017-02-16 05:25:49

标签: ios objective-c xcode notificationcenter control-center

众所周知,当我们打开和关闭底部控制中心/顶级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代码

1 个答案:

答案 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等。