2

我使用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];

谢谢!

4

1 回答 1

0

看起来你gestureRecognizerShouldBegin被要求使用一个手势而不是UIPanGestureRecognizer被要求使用您创建显然,您可以通过更改您gestureRecognizerShouldBegin的单元子类来测试它是否是平移手势来解决症状:

-(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;
}

不过,上述修复只是解决了症状。真正的问题是你的UIGestureRecognizerDelegate方法如何,gestureRecognizerShouldBegin除了UIPanGestureRecognizer. 可能还有其他手势在起作用(例如,如果您实现了一个canEditRowAtIndexPath返回YES,它启用了滑动手势),但我看不出您的自定义单元格将如何被识别为该滑动手势的代表。

我可以重现您的问题的唯一方法是手动向单元格(或表格或视图)添加滑动手势。我知道你说你没有使用滑动手势,但也许是在 Interface Builder 或类似的东西中意外添加的?我不知道,因为我无法重现您描述的症状。如果最坏的情况发生,您可以压缩您的项目并与我们分享,我很乐意快速浏览一下。

于 2013-02-24T17:19:39.793 回答