将UIGestureRecognizer添加到UITableViewCell

3

我使用了http://www.raywenderlich.com/21842/how-to-make-a-gesture-driven-to-do-list-app-part-13来给我的单元格添加手势识别器,这样我就可以把它们从左到右移动,但是我遇到了这个错误:

[UISwipeGestureRecognizer translationInView:]: unrecognized selector

我甚至不使用滑动识别器,所以我现在不知道该怎么做。
UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
recognizer.delegate = self;
[self addGestureRecognizer:recognizer];

谢谢!

1个回答

1

看起来你的 gestureRecognizerShouldBegin 被调用了,但不是你创建的 UIPanGestureRecognizer 手势。显然,你可以通过在你的单元格子类中更改 gestureRecognizerShouldBegin 来测试它是否为 pan 手势来解决这个问题:

-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
    {
        CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view];

        if (fabsf(translation.x) > fabsf(translation.y)) {
            return YES;
        }
        return NO;
    }

    return NO;
}

上述修复只是解决了症状。真正的问题是,除了您的UIPanGestureRecognizer手势之外,您的UIGestureRecognizerDelegate方法gestureRecognizerShouldBegin如何被调用。可能还有其他手势在起作用(例如,如果您实现了返回YES的canEditRowAtIndexPath,则会启用滑动手势),但我不知道您的自定义单元格如何被识别为该滑动手势的委托。
我唯一能够重现您的问题的方法是手动向单元格(或表格或视图)添加滑动手势。我知道您说您没有使用滑动手势,但也许在Interface Builder中意外添加了一个?我不知道,因为我很难重现您描述的症状。如果最坏的情况发生,您可以压缩项目并与我们分享,我很乐意快速查看。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接