是否有可能通过编程禁用iOS 7中的控制中心,如果没有,有什么替代scheme?

我开发了一个应用程序,从下到上使用滑动手势。 它在iOS 6中运行得非常好,但是现在iOS 7已经出来了,它的工作原理可能是25次中的1次:我几乎每次都能得到iOS 7控制中心。 显然,控制中心可以在设置中被禁用,但这是由电话的所有者,我无法控制。 所以我的问题是,有没有办法禁用控制中心的时候,当我的应用程序正在运行(或更有可能,是“积极”,因为我想控制中心回来,如果用户不积极使用我的应用程序)。 如果不是,还有什么select? 重新定位/重构function是唯一的解决scheme吗?

没有select,真的。 最好的办法是警告用户,并要求他们去设置closures它。

实际上,你会因为要求而失去很多用户,所以你应该改变手势。

其实有一个select。 你不能禁用它。 但是你可以防止意外的发射。 只需禁用状态栏。 然后在刷卡的时候会提示用户是否需要启动控制中心。 它不会在一次刷卡中启动。 相反,第一次滑动时会出现一个箭头,用户需要点击并拖动箭头才能启动控制中心,从而防止意外启动。 使用此代码来禁用状态栏。

你可以在IOS7中使用这个委托来禁用状态栏:

- (BOOL) prefersStatusBarHidden { return YES; } 

而这个方法在IOS6.1和之前的版本中:

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

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

Objective-C的:

 - (BOOL) prefersStatusBarHidden { return YES; } 

Swift 4+:

 override var prefersStatusBarHidden: Bool { return true } 

您还需要实现preferredScreenEdgesDeferringSystemGestures

Objective-C的:

 - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{ return UIRectEdgeAll; }; 

Swift 4+:

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

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