Плъзгане на ios жест

Опитвам се да създам просто приложение, където потребителят може да плъзга наляво и след това надясно, докато държи пръста си върху екрана. Искам да преброя колко плъзгания правят, включително промяна на посоката. Използвам uiswipegesture с посока, но той извиква действието само когато е ново плъзгане. За да има повече смисъл, той почти тества колко пъти потребителят може да движи пръста си отляво надясно и обратно в рамките на определен период от време. В момента имам тези методи в моя viewdidload

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

и след това това като действие

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

Всяка помощ ще бъде оценена.


person Oli Black    schedule 09.02.2014    source източник
comment
опитайте да използвате „UIPanGesture“.   -  person Akhilrajtr    schedule 09.02.2014


Отговори (1)


Бих направил нещо подобно.

Настройте някои променливи, за да съхранявате това, което проследявате:

@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
}
person Joel    schedule 09.02.2014