Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有可能以编程方式禁用iOS 7中的Control Center?如果没有,有哪些替代方案?_Ios_Ios7_Swipe Gesture_Control Center - Fatal编程技术网

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

是否有可能以编程方式禁用iOS 7中的Control Center?如果没有,有哪些替代方案?,ios,ios7,swipe-gesture,control-center,Ios,Ios7,Swipe Gesture,Control Center,我开发了一个应用程序,使用从下到上的滑动手势。它在iOS 6中运行得很好,但现在iOS 7问世了,它的工作效率可能是25次中的1次:我几乎每次都使用iOS 7 Control Center。显然,可以在设置中禁用控制中心,但这取决于手机所有者,我无法控制。因此,我的问题是,有没有一种方法可以在我的应用程序运行时禁用Control Center(或者更可能是“活动的”,因为如果用户没有积极使用我的应用程序,我希望Control Center返回)。如果没有,还有什么选择?重新定位/改造该功能是唯一

我开发了一个应用程序,使用从下到上的滑动手势。它在iOS 6中运行得很好,但现在iOS 7问世了,它的工作效率可能是25次中的1次:我几乎每次都使用iOS 7 Control Center。显然,可以在设置中禁用控制中心,但这取决于手机所有者,我无法控制。因此,我的问题是,有没有一种方法可以在我的应用程序运行时禁用Control Center(或者更可能是“活动的”,因为如果用户没有积极使用我的应用程序,我希望Control Center返回)。如果没有,还有什么选择?重新定位/改造该功能是唯一的解决方案吗?

真的没有其他选择。您所能做的最好的事情就是警告用户并让他们转到“设置”将其关闭


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

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

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

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
而IOS6.1及之前版本中的此方法:

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

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

目标-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
override var prefersStatusBarHidden: Bool { return true }
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}
Swift 4+:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
override var prefersStatusBarHidden: Bool { return true }
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}
您还需要实施:

目标-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
override var prefersStatusBarHidden: Bool { return true }
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}
Swift 4+:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 
override var prefersStatusBarHidden: Bool { return true }
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}

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

不是选项。不太可能是未来的选择。最好重新设计你的界面。@Wain是否有一个特别的原因来解释为什么在将来不太可能这样做?因为苹果希望为用户保持一致性。如果有任何应用程序可以关闭它,用户怎么知道?@Wain嗯,我在想当我运行我的应用程序时如何打开/关闭状态栏,但这是可见的-用户可以看到状态栏不在那里。如果手势不起作用,用户如何知道原因?大多数人会认为有东西坏了,这是一种风险,用于通知(从顶部滑动)。问题在于控制中心(从底部滑动)隐藏状态栏可防止意外启动通知和控制中心。我试过了。请试一试,看看窍门。PS:它没有禁用任何东西,只是防止意外发射。@HarikrishnanT谢谢你的建议,但这不是我的解决方案。我有一个由“向上”(从底部滑动)触发的功能,所以我根本不想要任何控制中心,不管是意外还是意外。@mike.tihonchik:请仔细阅读。特别是“每个应用程序都应该做的事情”下面的第7点:@HarikrishnanT感谢您的链接。我面临的问题是,iOS确定99%的时间都需要Control Center。最初的设计需要一个位于屏幕底部的图像(高度约为20px),当“拖动”到屏幕上时,它会带来一个新的视图(与Control Center非常相似)。无论如何,我正在重新设计它,以便将功能移到其他地方[向上投票选择有用的链接]是的,不幸的是,我将控制图标从上到下移动,以避免与通知中心发生冲突。然后iOS7出来了,底部不再是一个选项,因为用户可以从底部滑动。因此,顶部和底部都是外部的。由于房地产问题,左派和右派都是糟糕的选择。