我们如何在 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 控制中心的行为与地图(小标签)中的行为一样?