平移手势干扰 UISlider
Posted
技术标签:
【中文标题】平移手势干扰 UISlider【英文标题】:Pan gesture interferes with UISlider 【发布时间】:2012-03-07 12:40:44 【问题描述】:我正在尝试创建一个滑动菜单(有点像 Facebook/Twitter 应用程序中的),我的版本成功地使用平移手势来实现此效果。该类称为“SlideMenu”。
我在我的 ViewController 中实例化一个 SlideMenu,然后在上面添加一堆 UI 元素作为子视图,例如 UISliders、UIButtons 等。
问题是平移手势似乎干扰了 UISlider,因为它会滑动,但在很短的距离后停止。我在答案 (Gesture problem: UISwipeGestureRecognizer + UISlider) 上找到了一段代码,但我不确定如何实现它或它是否适用于我的设计。
代码是这样的:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
if ([touch.view isKindOfClass:[UISlider class]])
// prevent recognizing touches on the slider
return NO;
return YES;
我尝试将它添加到我的 SliderMenu 类和我的 ViewController,但没有骰子。这要去哪里?我必须设置什么代表(如果有的话?)谢谢
【问题讨论】:
【参考方案1】:基本上,无论您在哪个控制器或视图中处理手势识别器。创建手势识别器时,可以将其委托设置为某个对象(可能是您的视图控制器)并让该对象实现UIGestureRecognizerDelegate
。委托回调之一是gestureRecognizer:shouldReceiveTouch
,因此您只需将上面放置的代码复制到对象(视图控制器)的实现中。
【讨论】:
谢谢。我错过的细节是将手势的委托设置为自我。现在一切都好! 很好的答案!!,减去 为我工作。但现在我应该在平移时调用的方法没有被调用。如何调用此方法? 我已经为此发布了一个问题,这里是link【参考方案2】:我也遇到了一些问题,问题的根源是
gestureRecogniser.cancelsTouchesInView
属性默认为true
,当我试图拖动它时,这对我的 UISlider 造成了奇怪的延迟效果。
这解决了
gestureRecogniser.cancelsTouchesInView = false
ps.:还要确保 delaysTouchesBegan, delaysTouchesEnded
设置为 false
【讨论】:
以上是关于平移手势干扰 UISlider的主要内容,如果未能解决你的问题,请参考以下文章