0

Я пытаюсь создать простое приложение, в котором пользователь может прокручивать влево, а затем вправо, удерживая палец на экране. Я хочу рассчитать, сколько суммарных проверок они делают, включая изменение направления. Я использую uiswipegesture с направлением, но это называется только действием, когда это новый промах. Чтобы иметь больше смысла, он почти тестирует, сколько раз пользователь может переместить палец влево и вправо в течение определенного периода времени. На данный момент у меня такого рода методов в моей viewdidloadSwiping ios gesture

UISwipeGestureRecognizer *oneFingerSwipeLeft = [[UISwipeGestureRecognizer alloc] 
               initWithTarget:self 
               action:@selector(oneFingerSwipeLeft:)]; 
[oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
[[self view] addGestureRecognizer:oneFingerSwipeLeft]; 

и затем это как действие

-(void) oneFingerSwipeLeft:(UIGestureRecognizer*)recognizer { 
NSLog(@"user swipped left"); 
} 

Любая помощь будет оценена.

+1

попробуйте использовать 'UIPanGesture'. – Akhilrajtr

ответ

1

Я бы сделал что-то вроде этого.

Setup некоторые переменные для хранения, что вы отслеживаете:

@property (nonatomic) int swipeCount; 
@property (nonatomic) CGPoint previousLocation; 

СОЗДАТЬ UIPanGestureRecognizer:

UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizePanWithGestureRecognizer:)]; 
[gesture setDelegate:self]; 
[self.view addGestureRecognizer:gesture]; 

Ручка обратного вызова

- (void)didRecognizePanWithGestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    switch (gestureRecognizer.state) 
    { 
     case UIGestureRecognizerStateBegan: 
      [self handleGestureBeganWithRecognizer:gestureRecognizer]; 
      break; 

     case UIGestureRecognizerStateChanged: 
      [self handleGestureChangedWithRecognizer:gestureRecognizer]; 
      break; 

     case UIGestureRecognizerStateEnded: 
     case UIGestureRecognizerStateCancelled: 
     case UIGestureRecognizerStateFailed: 
      [self handleGestureEndedWithRecognizer:gestureRecognizer]; 
      break; 

     default: 
      break; 
    } 
} 

отслеживать информацию вы хотите захват, когда пользователь выполняет поиск взад и вперед

- (void)handleGestureBeganWithRecognizer:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    [self setSwipeCount:0]; 
    [self setPreviousTouchLocation:[gestureRecognizer locationInView:self.view]]; 
} 

- (void)handleGestureChangedWithRecognizer:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    CGPoint currentTouchLocation = [gestureRecognizer locationInView:self.view]; 
    CGFloat delta = currentTouchLocation.x - self.previousTouchLocation.x; 
    [self setPreviousTouchLocation:currentTouchLocation]; 

    //... figure out if they changed directions based on delta positive or negative 

} 

- (void)handleGestureEndedWithRecognizer:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    //.... finish up 
}