在UITableView上矛盾的手势识别器

我有两个自定义控件在我的UIView ,一个是现在stream行的滑动菜单(当你在NavBar上滑动的手指向右滑动),另一个是在UITableViewCell – 这是一个自定义控件的TableViewCell命名DMSlidingTableViewCell (就像在Twitter的应用程序 – 当你滑动左边的单元格,它显示一些button等)

他们工作得很好,但是当我尝试添加手势识别器到整个UITableView,从而使整个视图成为UIGestureRecognizer一个区域(所以当我移动它时,我可以将视图移到右侧),手势识别器以某种方式冲突。

这可能是什么原因?

我不清楚你认为在这种情况下两个滑动手势识别器可以一起工作的方式,但我想你可以试着看看

 – gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 

委托方法 。

请记住,你有2个手势,所以2代表(概念上,他们是由相同的方法实施),所以你可以使一个手势(第一个参数)总是返回NO,另一个YES,看看你是否可以做2手势识别人员以一种令人满意的方式一起工作。

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([gestureRecognizer.view isKindOfClass:[UITableView class]]) { ... } else { ... } } 

这只是一个应该在你的情况下工作的例子(虽然检查语法),但是你也可以将2个识别器存储在你的类的属性中,所以你知道哪个是哪个。

当我在UITableView上使用UIGestureRecognizer时,遇到了与u相同的问题。最后,我发现UIGestureRecognizer中的“cancelsTouchesInView”属性,这很有帮助。

  UIGestureRecognizer* tapGesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; **tapGesture.cancelsTouchesInView = NO;**//pass touch event to others 

最好的祝愿!