ios - 如何仅在 applicationDidBecomeActive 中触发 "Notification Center or Control Center"时检查

标签 ios objective-c xcode notificationcenter control-center

众所周知,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/

相关文章:

Android/Cordova UUID 可靠性

ios - 从 NIB 加载 View ,IBOutletCollection 为 nil,即使其他 IBOutlet 工作正常

ios - 如何使用自动布局在自定义 UITableViewCell 中动态设置 UITextView 高度

ios - setNavigationBarHidden :NO is appearing when dismissed

ios - UIScrollView内容不缩放

ios - 我刚刚升级到 xcode 到 4.5,现在无法安装 iOS5.1

xcode - UISlider 中的动画在 iOS 7 上被跳过

iphone - 单例类内存泄漏

ios - 如何在我的Xcode项目中集成Razorpay付款网关?

ios - 添加一个 UILabel 作为 UITextView 的 subview ,带有换行符且没有水平指示器