Ich möchte meinem ansichtsbasierten iPhone-Projekt eine einfache Wischgestenerkennung hinzufügen. Gesten in alle Richtungen (rechts, unten, links, oben) sollten erkannt werden.
In den Dokumenten für UISwipeGestureRecognizer wird Folgendes angegeben:
Sie können mehrere Richtungen angeben, indem Sie mehrere UISwipeGestureRecognizerDirection-Konstanten mit bitweisen ODER-Operanden angeben. Die Standardrichtung ist UISwipeGestureRecognizerDirectionRight.
Bei mir funktioniert es jedoch nicht. Wenn alle vier Richtungen ODER-verknüpft sind, werden nur linke und rechte Wischbewegungen erkannt.
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionUp)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
[super viewDidLoad];
}
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
}
Ich habe dies behoben, indem ich der Ansicht vier Erkenner hinzugefügt habe, aber ich bin gespannt, warum es nicht wie in den Dokumenten angegeben funktioniert hat.
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionDown)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
[super viewDidLoad];
}
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
}