IOS:utilizzare un gesto per calcolare la distanza da due punti cg
-
29-10-2019 - |
Domanda
Ho questo codice per il gesto in una vista
- (void)rightSwipeHandle:(UIPanGestureRecognizer*)gestureRecognizer{
CGPoint touchBegan;
CGPoint pointEnd;
if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
{
CGPoint touchBegan = [gestureRecognizer locationInView: gestureRecognizer.view];
NSLog(@"pointBegan:%@",NSStringFromCGPoint(touchBegan));
}
else if (gestureRecognizer.state == UIGestureRecognizerStateChanged)
{
}
else if (gestureRecognizer.state == UIGestureRecognizerStateEnded ||
gestureRecognizer.state == UIGestureRecognizerStateCancelled ||
gestureRecognizer.state == UIGestureRecognizerStateFailed)
{
pointEnd = [gestureRecognizer locationInView:gestureRecognizer.view];
NSLog(@"pointEnd:%@", NSStringFromCGPoint(pointEnd));
CGFloat xDist = (pointEnd.x - touchBegan.x);
CGFloat yDist = (pointEnd.y - touchBegan.y);
CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist));
NSLog(@"distance:%f", distance);
}
}
ma non funziona bene e non so dove sia il problema...se lo scorrimento è dal basso verso l'alto calcola una distanza e se fai il contrario calcola una distanza molto diversa, non capisco
Soluzione
Definire i punti come statici, altrimenti il punto touchBegan perderà il suo valore.Ciò accade perché l'impostazione dei valori di ciascun punto avviene in diverse chiamate di metodo e con ognuna si ridefiniscono i punti all'inizio.
static CGPoint touchBegan;
static CGPoint pointEnd;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow