29

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

4

3 回答 3

51

其实还有一个选择。您不能禁用它。但是可以防止意外启动。只需禁用状态栏。然后在刷卡时,将提示用户是否必须启动控制中心。它不会在一次滑动中启动。相反,第一次滑动时会出现一个箭头,用户需要单击并拖动箭头以启动控制中心,从而防止意外启动。使用此代码禁用状态栏。

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

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

而IOS6.1及之前的这个方法:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
于 2013-11-12T10:12:01.207 回答
14

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

目标-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

斯威夫特 4+:

override var prefersStatusBarHidden: Bool { return true }

您还需要实现preferredScreenEdgesDeferringSystemGestures

目标-C:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};

斯威夫特 4+:

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

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

于 2017-10-24T12:41:45.077 回答
11

没有其他选择,真的。您能做的最好的事情就是警告用户并要求他们转到设置以将其关闭。

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

于 2013-10-10T21:26:49.510 回答