Пролистать направление в Cocoa Touch - PullRequest
22 голосов
/ 16 марта 2011

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

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 ]

46 голосов
/ 16 марта 2011

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

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

8 голосов
/ 15 мая 2012

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

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];  
1 голос
/ 29 мая 2013

И Гипсодер, и Полбейли ответили правильно.Для более подробного решения моего см .: https://stackoverflow.com/a/16810160/936957

1 голос
/ 29 декабря 2011

UISwipe ... это iOS.Но для Какао вы можете использовать -swipeWithEvent: в вашем классе просмотра.См. Документацию по адресу: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html#//apple_ref/doc/uid/10000060i-CH13-SW10

...