我们如何在 iOS 7 上检测何时控制中心?

Posted

技术标签:

【中文标题】我们如何在 iOS 7 上检测何时控制中心?【英文标题】:How do we detect when control center on iOS 7? 【发布时间】:2014-05-26 14:25:31 【问题描述】:

当控制中心出现在 ios 7 上时我遇到了问题。基本上,当控制中心出现时会触发 applicationDidEnterBackground。

但是在我的方法中,我想检测它是只是控制中心打开还是通知中心,因为我会在那种状态下以不同的方式对待 applicationDidEnterBackground。

任何帮助将不胜感激。

【问题讨论】:

猜你运气不好,applicationDidEnterBackground 是唯一检测是否显示控制中心。没有显示是电话、通知还是控制中心的具体信息。 applicationDidEnterBackground 在通知/控制中心出现时根本不应该被调用 - 在这种情况下会调用applicationWillResignActive applicationDidEnterBackground 接到电话时也不会被呼叫。 【参考方案1】:

我刚刚发布了一个小的 UIWindow 子类,它正是这样做的。您只需订阅 NSNotification 并可以对打开控制中心的用户做出反应。 Github 上的详细说明和设置:AAWindow。

实现这一点的方法是结合使用 NSTimer 和覆盖 UIWindow 中的 sendEvent 来接收所有触摸而不阻塞它们。因此,您基本上会收到所有触摸,检查它们是否靠近屏幕的下边缘,如果是,请将计时器设置为半秒,如果在此计时器运行期间调用 applicationWillResignActive,您几乎可以确定 ControlCenter 已打开。如果没有状态栏,时间会有所不同,因为此时应用处于全屏状态,用户最多可能需要 3 秒才能启动控制中心。

【讨论】:

以上是关于我们如何在 iOS 7 上检测何时控制中心?的主要内容,如果未能解决你的问题,请参考以下文章

如何在控制中心检测蓝牙真正关闭(或蓝牙开关按钮关闭)

如何检测 UINavigationController 动画何时完成?

如何使 iOS 7 控制中心的行为与地图(小标签)中的行为一样?

[iOS]:检测从另一个外部应用程序返回后视图控制器何时出现

如何在 iOS 7 中检测水龙头的位置

如何控制何时在 iOS 中提示用户提供推送通知权限