在Cocoa Touch中获取滑动方向

Csa*_*abi 22 xcode cocoa-touch objective-c gesture uigesturerecognizer

我试图抓住一个手势,但它不起作用.这是我的代码:

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

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

它总是得到一个手势,但不认识方向.我也试过if(recognizer.direction){NSLog(@"get gesture");},它也有效,所以我不明白我犯了哪个错误.

谢谢你的帮助.

pau*_*ley 47

你没有UISwipeGestureRecognizer正确使用.它的方向始终是你设定的方向(在这种情况下UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft,或3).

如果您想要左右捕捉可以区分的滑动,则必须为每个滑动设置单独的识别器.Apple在他们的SimpleGestureRecognizers示例中执行此操作.


gyp*_*der 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];  
Run Code Online (Sandbox Code Playgroud)