3

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

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

这可能是什么原因?

4

2 回答 2

6

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

– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

委托方法

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

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

    if ([gestureRecognizer.view isKindOfClass:[UITableView class]]) {
       ...
    } else {
       ...
    }
}

这只是一个应该适用于您的情况的示例(尽管请检查语法),但您也可以将 2 个识别器存储在您的类的属性中,这样您就知道哪个是哪个。

于 2013-01-15T12:44:58.227 回答
5

当我在 UITableView 上使用 UIGestureRecognizer 时,我遇到了和 u 一样的问题。最后,我通过这个找到了 UIGestureRecognizer 中的“cancelsTouchesInView”属性,它很有帮助。

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

祝你好运!</p>

于 2015-08-15T07:12:54.917 回答