Is it possible to disable Control Center in iOS 7 programmatically and if not, what are alternatives?

北慕城南 提交于 2019-11-26 22:15:10

No alternatives, really. The best you can do is warn users and ask them to go to settings to turn it off.

Realistically, you'll lose a lot of users just by asking that, so you should change the gestures.

Actually there is an option. You cannot disable it. But you can prevent the accidental launch. Just disable the status bar. Then on swipe the user will be prompted whether the control centre have to be launched or not. it won't be launched in a single swipe. Instead an arrow appears on the first swipe and the user need to click and drag the arrow to launch the control centre, hence prevent accidental launch. Use this code to disable status bar.

You can disable the status bar using this delegate in IOS7:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

And this method in IOS6.1 and prior:

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

Starting with the iOS 11 SDK (compiled in Xcode 9) additionally to implementing prefersStatusBarHidden:

Objective-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

Swift 4+:

override var prefersStatusBarHidden: Bool { return true }

you also need to implement preferredScreenEdgesDeferringSystemGestures:

Objective-C:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};

Swift 4+:

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

Otherwise the Control/Notification Center appear directly; instead of first showing the gray box with a up/down arrow that needs to be dragged up/down.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!