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あなたが作成した以外のジェスチャーを求められているように見えますUIPanGestureRecognizergestureRecognizerShouldBegin明らかに、セルサブクラスを変更して、パンジェスチャかどうかをテストするだけで、症状を解決できます。

-(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 に答える