是否有可能通过编程禁用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 }
否则控制/通知中心直接出现; 而不是首先显示带有向下/向下拖动的向下箭头的灰色框。