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

mik*_*hik 28 ios swipe-gesture ios7 control-center

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

Har*_*nan 51

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

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

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
Run Code Online (Sandbox Code Playgroud)

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

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
Run Code Online (Sandbox Code Playgroud)

  • 隐藏状态栏可防止意外启动通知和控制中心.我试过了.请试一试,看看诀窍.PS:它不会禁用任何东西,只是防止意外启动. (17认同)
  • 它确实如此!进行投票,并感谢您的纠正. (3认同)
  • 这是通知(从顶部滑动).问题是关于控制中心(从底部滑动) (2认同)
  • @ mike.tihonchik:仔细阅读.特别是"每个应用应该做的事情"下的第7点:https://developer.apple.com/library/ios/documentation/userexperience/conceptual/transitionguide/Scoping.html (2认同)

Jea*_*Luc 13

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

Objective-C的:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
Run Code Online (Sandbox Code Playgroud)

Swift 4+:

override var prefersStatusBarHidden: Bool { return true }
Run Code Online (Sandbox Code Playgroud)

您还需要实现preferredScreenEdgesDeferringSystemGestures:

Objective-C的:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};
Run Code Online (Sandbox Code Playgroud)

Swift 4+:

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}
Run Code Online (Sandbox Code Playgroud)

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


ily*_* n. 11

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

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