Получить направление движения в 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");}
, и он тоже работал, поэтому я не понимаю, где я допустил ошибку.
Спасибо за любую помощь.
Ответы
Ответ 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];
Ответ 3
UISwipe... есть iOS. Но для Cocoa вы можете использовать -swipeWithEvent:
в вашем классе вида. См. Документацию по адресу:
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html#//apple_ref/doc/uid/10000060i-CH13-SW10
Ответ 4
Ответы на gypsicoder и paulbailey правильные. Более подробное мое решение см. В разделе fooobar.com/info/45938/...