iOS 5.1中的滑动手势被UISplitViewController劫持了,如何避免?

12
在 iOS 5.1 中,与 UISplitViewController 应用相关的一个新行为似乎会截取 UISlider 的移动操作,并产生不良结果。这可能也适用于 UISegmented 控件和任何其他处理从左到右手势的控制面板。
在纵向方向上,UISplitView 中的 Master 视图通常是隐藏的。从 iOS 5.1 开始,在屏幕上向右滑动会在设备的左侧弹出 Master 视图。问题是,滑动 UISlider 控件的滑块被误解为屏幕滑动:如果我向右猛推 UISlider 滑块,Master 面板就会弹出来。
在我的应用程序中,弹出 Master 视图会产生意外的副作用(以及性能问题)。
我认为这种行为是苹果的一个错误。有什么想法可以解决它吗?我能否让 UISlider 捕获手势并处理它,而不将其传递给响应链?
提前感谢您的任何见解!

11
虽然我仍然相信苹果公司在这方面存在漏洞(UIControls,例如UISlider不应该与UISplitViewController竞争这个手势),但有一个简单的解决方法:splitViewController.presentsWithGesture = NO; // SplitView 不会识别右滑手势。发帖问题时为什么总是会突然在其他地方找到答案呢? - jbbenni
1
如果我想在主控上保留默认的手势功能,但只在滑块移动时禁用它怎么办?将“presentsWithGesture”设置为“no”会在所有地方禁用手势。 - Mark13426
不可能发生。滑块不会移动,因为手势在滑块开始移动之前被拦截了。你不能只在滑块移动时禁用劫持,因为滑块甚至没有开始移动。这是一个冒险,但可能有一种方法可以在处理手势之前拦截它,然后确定它是否会启动滑块移动,并在那种情况下禁用劫持。但这很棘手。事件处理的层次结构正在对你产生影响,因为操作系统首先处理手势。 - jbbenni
1个回答

9

苹果已确认此问题是一个先前报告的已在调查中的错误的重复项 (Bug ID# 10170209)。

目前这个解决方法似乎运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接