iOS 5.1被UISplitViewController劫持的滑动手势 - 如何避免?
问题描述:
iOS 5.1中与UISplitViewController
应用程序有关的新行为似乎是拦截UISlider
动作,并产生不良结果。这也可能适用于控件和处理从左到右手势的任何其他控制表面。iOS 5.1被UISplitViewController劫持的滑动手势 - 如何避免?
以纵向显示UISplitView
,主视图通常隐藏。从iOS 5.1开始,在屏幕上右击会在设备左侧显示主视图。问题是,滑动我的UISlider控制器的拇指被误解为屏幕滑动:如果我将UISlider拇指向右侧急剧推动,主面板弹出。
在我的应用程序中,存在不希望的副作用(和性能问题),因为它会占用主视图。
我认为这是Apple的一个bug。任何想法如何解决它?我能以某种方式让UISlider
捕获手势并对其进行处理,而不会将其传递给响应者链?
在此先感谢您的任何见解!
答
Apple将此问题确认为以前报告的当前正在调查的错误的副本(错误ID为10170209)。
解决方法似乎现在正常运行。
感谢@Dimitris Tavlikos。 虽然我仍然相信苹果引入了一个bug(UISlider等UIControls不应该与UISplitViewController在这个手势上竞争),但有一个简单的解决方法: 'splitViewController.presentsWithGesture = NO; // SplitView无法识别右滑动 发布问题会导致您突然在其他地方找到答案的是什么? – jbbenni 2012-03-13 20:46:11
如果我想在主控器上保留默认的手势功能,但只在滑动器移动时禁用它,该怎么办?将'presentsWithGesture'设置为'no'可以在任何地方禁用手势。 – Mark13426 2016-11-25 00:39:53
不会发生。滑块不会移动,因为在滑块开始移动之前手势已被拦截。您不仅可以在滑块移动时禁用劫持,因为滑块甚至不会开始移动。这是一个长镜头,但可能有办法在处理之前拦截手势,然后确定它是否已开始移动滑块,并在该情况下禁用劫持。但这很棘手。事件处理的层次结构正在与你对抗,因为操作系统首先会对手势进行破解。 – jbbenni 2016-12-04 04:24:13