Donc j'essaye de créer une application qui change une étiquette basée sur la direction que vous balayez. Cependant, au lieu d'être capable de glisser n'importe où sur l'écran, je voudrais seulement glisser sur une vue spécifique. J'ai mis une nouvelle vue sur le fichier .xib et utilisé cette vue pour l'emplacement des touches et l'ai nommé leftView, mais il utilise toujours l'écran entier. J'utilise une méthode touchesBegan et touchesMoved pour pouvoir utiliser des diagonales. est ici un peu du code J'utilise:Plusieurs vues de balayage
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
gestureStartPoint = [touch locationInView:leftView];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:leftView];
CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x);
CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y);
if ((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x < gestureStartPoint.x){
label.text = @"Left Horizontal swipe detected";
}
else if((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x > gestureStartPoint.x){
label.text = @"Right Horizontal swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y < gestureStartPoint.y){
label.text = @"Up Vertical swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y > gestureStartPoint.y){
label.text = @"Down Vertical swipe detected";
}