13

このコードを追加しましたcellForRowAtIndexPath

UISwipeGestureRecognizer *gestureR = [[UISwipeGestureRecognizer alloc]
                                             initWithTarget:self action:@selector(handleSwipeFrom:)];
        [gestureR setDirection:UISwipeGestureRecognizerDirectionRight];//|UISwipeGestureRecognizerDirectionRight)];
        [cell addGestureRecognizer:gestureR];

それはうまくいきます。しかし、私はそうしたいUISwipeGestureRecognizerDirectionLeftのでこのように追加しました

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)];

方向と状態を確認すると、常に3=3になります。

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {    

    NSLog(@"%d = %d",recognizer.direction,recognizer.state);
}

ジェスチャを1つだけ適用すると、正常に機能します。2つのジェスチャーを1つずつ追加してみました。ただし、1つのジェスチャに対してのみ応答します。

2番目のジェスチャーを追加する方法。1つのジェスチャをTableViewに直接追加し、別のジェスチャをセルに追加しましたが、現在は使用しています。

4

3 に答える 3

23

これを試して

UISwipeGestureRecognizer*ジェスチャーR;
ジェスチャR=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease];
ジェスチャR.方向=UISwipeGestureRecognizerDirectionLeft;
[addGestureRecognizer:gestureRを表示];

ジェスチャR=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease];
ジェスチャR.方向=UISwipeGestureRecognizerDirectionRight; // デフォルト
[addGestureRecognizer:gestureRを表示];

左右のスワイプで異なる機能を処理する場合は、セレクターを変更するだけです。

于 2011-12-19T16:24:56.803 に答える
7

2回割り当てる代わりに、

UISwipeGestureRecognizer* recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft+UISwipeGestureRecognizerDirectionRight];
[cell addGestureRecognizer:recognizer];

そして、アクションのスワイプの方向を次のように取得します。

-(void)handleSwipe:(UISwipeGestureRecognizer *) sender 
{
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft) 
    {
    //do something
    }
    else //if (sender.direction == UISwipeGestureRecognizerDirectionRight) 
    {
  //do something
     }
}
于 2013-11-30T07:32:33.773 に答える
5

あなたがこれを尋ねてから、私はそれが何年も経っていることを知っています。ただし、質問の次の行をもう一度読んでみてください。 [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

追加したことに気づきましたかUISwipeGestureRecognizerDirectionRight。2回!!

:D

于 2013-05-09T06:42:13.867 に答える