Подтвердить что ты не робот

Получить направление движения в Cocoa Touch

Я пытаюсь поймать жест, но он не работает. Вот мой код:

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");}, и он тоже работал, поэтому я не понимаю, где я допустил ошибку.

Спасибо за любую помощь.

4b9b3361

Ответ 1

Вы не используете UISwipeGestureRecognizer правильно. Его направление всегда будет тем, к которому вы его установили (в данном случае UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft или 3).

Если вы хотите захватить удары слева и справа, которые вы можете различать, вам нужно будет настроить отдельный распознаватель для каждого. Apple делает это в своем примере SimpleGestureRecognizers.

Ответ 2

Что вам нужно сделать, это просто изменить коды для добавления распознавателя жестов.

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];  

Ответ 4

Ответы на gypsicoder и paulbailey правильные. Более подробное мое решение см. В разделе fooobar.com/info/45938/...