是否可以通过编程方式在iOS 7中禁用Control Center,如果没有,有哪些替代方案?

时间:2013-10-10 21:21:44

标签: ios ios7 swipe-gesture control-center

我开发了一款自下而上使用滑动手势的应用。它在iOS 6中完美运行,但现在iOS 7出现了,它的工作次数可能是25次中的一次:我几乎每次都得到iOS 7控制中心。显然,可以在“设置”中禁用控制中心,但这取决于手机所有者,我无法控制。所以我的问题是,有没有办法在我的应用程序运行时禁用控制中心(或者更可能是“活动”,因为如果用户没有主动使用我的应用程序,我希望控制中心返回)。如果没有,有哪些替代方案?重新定位/重新设计该功能是唯一的解决方案吗?

3 个答案:

答案 0 :(得分:51)

实际上有一个选项。你无法禁用它。但是你可以防止意外发射。只需禁用状态栏即可。然后在滑动时,将提示用户是否必须启动控制中心。它不会在一次刷卡中启动。而是在第一次滑动时出现箭头,用户需要单击并拖动箭头以启动控制中心,从而防止意外启动。使用此代码禁用状态栏。

您可以在IOS7中使用此委托禁用状态栏:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

这个方法在IOS6.1和之前:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

答案 1 :(得分:13)

从iOS 11 SDK(在Xcode 9中编译)开始,另外实现prefersStatusBarHidden

<强>目标-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

Swift 4 +:

override var prefersStatusBarHidden: Bool { return true }

您还需要实施preferredScreenEdgesDeferringSystemGestures

<强>目标-C:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};

Swift 4 +:

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}

否则控制/通知中心会直接显示;而不是首先显示带有向上/向下箭头的灰色框,需要向上/向下拖动。

答案 2 :(得分:11)

没有替代品,真的。您可以做的最好的事情是警告用户并要求他们转到设置以关闭它。

实际上,只要问这个就会失去很多用户,所以你应该改变手势。