Как обнаружить прокрутку влево/вправо на iPhone?

Есть ли простой способ обнаружить эти жесты для iPhone? Я могу использовать touchhesBegan, touchsMoved, touchesEnded. Но как я могу реализовать жесты? thz u.

Ответ 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. Он будет делать это тривиально, что злобно круто.