Есть ли простой способ обнаружить эти жесты для iPhone? Я могу использовать touchhesBegan, touchsMoved, touchesEnded. Но как я могу реализовать жесты? thz u.
Как обнаружить прокрутку влево/вправо на iPhone?
Ответ 1
Вы на правильном пути. В touchsBegan вы должны сохранить позицию, в которой пользователь сначала касается экрана.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
self.startPosition = [touch locationInView:self];
}
Аналогичный код в touchesEnded дает конечную позицию. Сравнивая две позиции, вы можете определить направление движения. Если x-координата переместилась за пределы определенного допуска, у вас есть левый или правый салфетки.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint endPosition = [touch locationInView:self];
if (startPosition.x < endPosition.x) {
// Right swipe
} else {
// Left swipe
}
}
Вам не нужны прикосновения, если вы не хотите обнаруживать и отслеживать салфетки, пока пользователь по-прежнему касается экрана. Также может быть целесообразно проверить, что пользователь переместился на минимальное расстояние, прежде чем решить, что они сделали салфетки.
Ответ 2
Вы используете объект UISwipeGestureRecognizer для обнаружения касания и направления Swipe In
UIView или где угодно в iphone sdk.
UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[rightRecognizer setNumberOfTouchesRequired:1];
//add the your gestureRecognizer , where to detect the touch..
[view1 addGestureRecognizer:rightRecognizer];
[rightRecognizer release];
UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)];
leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[leftRecognizer setNumberOfTouchesRequired:1];
[view1 addGestureRecognizer:leftRecognizer];
[leftRecognizer release];
- (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer
{
NSLog(@"rightSwipeHandle");
}
- (void)leftSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer
{
NSLog(@"leftSwipeHandle");
}
Я думаю, что это лучшее решение для вашей проблемы
Ответ 3
Если вы готовы настроить таргетинг на iPhone OS 3.2 или более поздней версии (все iPads или обновленные iPhone), используйте объект UISwipeGestureRecognizer
. Он будет делать это тривиально, что злобно круто.