2010-12-06 3 views

Répondre

3

Vous devez implémenter un outil de reconnaissance de gestes dans votre application.

Dans votre interface:

#define kMinimumGestureLength 30 
#define kMaximumVariance 5 
#import <UIKit/UIKit.h> 
@interface *yourView* : UIViewController { 
    CGPoint gestureStartPoint; 
} 
@end 

kMinimumGestureLength est la distance minimale du doigt à parcourir avant compte comme un simple glissement. kMaximumVariance est la distance maximale, en pixels, que le doigt peut terminer au-dessus du point de départ sur l'axe des ordonnées.

Maintenant ouvrez votre fichier Interface .xib et sélectionnez votre point de vue dans IB, et assurez-vous Multiple Touch est activé dans View Attributes.

Dans votre mise en œuvre, mettre en œuvre ces méthodes.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch = [touches anyObject]; 
     gestureStartPoint = [touch locationInView:self.view]; 
    } 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint currentPosition = [touch locationInView:self.view];  

    CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x); 
    CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y); 


    if(deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance){ 
     //do something 
} 
else if(deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance){ 
     //do something 
    } 
} 

Ceci est une façon de mettre en œuvre un système de reconnaissance de balayage. En outre, vous devriez vraiment consulter la documentation sur ce sujet:

UISwipeGestureRecognizer

+0

Vous n'avez pas expliqué kMinimumVariance. – Moshe

+0

J'ai édité, Moshe. –

3

Le UIGestureRecognizer est ce que vous voulez. En particulier, la sous-classe UISwipeGestureRecognizer

Questions connexes