在UITableView上冲突的手势识别器

Ser*_*yov 3 iphone objective-c uitableview ios

我有两个自定义控件UIView,一个是现在流行的滑动菜单(当你NavBar在右边的视图幻灯片上滑动手指)而另一个是在UITableViewCell- 它是TableViewCell来自名为DMSlidingTableViewCell的控件的自定义(如Twitter应用程序 - 当您在左侧滑动单元格时,它会显示一些按钮等.)

它们工作正常,但是当我尝试在整个UITableView中添加一个Gesture识别器,从而使整个视图成为一个区域UIGestureRecognizer(所以当我移动它时我可以将视图移动到右侧),手势识别器会以某种方式发生冲突.

这可能是什么原因?

ser*_*gio 6

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

– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
Run Code Online (Sandbox Code Playgroud)

委托方法.

请记住,你有2个手势,所以2个委托(从概念上讲,它们是通过相同的方法实现的),所以你可以做一个手势(第一个参数)总是返回NO,另一个是,看看你是否可以做出2手势识别器以令人满意的方式协同工作.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    if ([gestureRecognizer.view isKindOfClass:[UITableView class]]) {
       ...
    } else {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个应该适用于你的情况的例子(虽然检查语法),但你也可以将2个识别器存储在你的类的属性中,这样你就知道哪个是哪个.


小智 5

当我使用UIGestureRecognizer上一个UITableView,我遇到像u.Finally同样的问题,我这个发现UIGestureRecognizer的"cancelsTouchesInView"属性一个,和它的帮助.

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

最好的祝愿!