23

ジェスチャーをキャッチしようとしていますが、機能しません。これが私のコードです:

UISwipeGestureRecognizer *recognizer;
    recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
    [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft)];
    [[self view] addGestureRecognizer:recognizer];
    [recognizer release]; 

-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
    NSLog(@"get gesture");
    if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"get gesture right");
    }
    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"get gesture Left");
    }
}

常にジェスチャーを取得しますが、方向を認識しません。私もやってみif(recognizer.direction){NSLog(@"get gesture");}てうまくいったので、どこを間違えたのかわかりません。

助けてくれてありがとう。

4

4 に答える 4

47

UISwipeGestureRecognizer正しく使用していません。その方向は常に設定した方向になります(この場合UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeftは、または3)。

左右を区別できるスワイプをキャプチャする場合は、それぞれに個別の認識機能を設定する必要があります。AppleはSimpleGestureRecognizersサンプルでこれを行っています。

于 2011-03-16T07:59:09.287 に答える
8

あなたがしなければならないのは、ジェスチャーレコグナイザーを追加するためのコードを変更することだけです。

UISwipeGestureRecognizer *leftRecognizer;
leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[leftRecognizer setDirection: UISwipeGestureRecognizerDirectionLeft];
[[self view] addGestureRecognizer:leftRecognizer];
[leftRecognizer release];

UISwipeGestureRecognizer *rightRecognizer;
rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[rightRecognizer setDirection: UISwipeGestureRecognizerDirectionRight];
[[self view] addGestureRecognizer:rightRecognizer];
[rightRecognizer release];  
于 2012-05-15T15:20:56.347 に答える
1

UISwipe...はiOSです。ただし、Cocoaの場合-swipeWithEvent:は、ビュークラスで使用できます。次のドキュメントを参照してください:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html#//apple_ref/doc/uid/10000060i-CH13-SW10

于 2011-12-29T09:54:57.027 に答える
1

ジプシコーダーとポールベイリーの答えはどちらも正しいです。私のより詳細な解決策については、https ://stackoverflow.com/a/16810160/936957を参照してください。

于 2013-05-29T09:30:10.113 に答える