recognizer iphone ipad ios uigesturerecognizer gesture

iphone - UISwipeGestureRecognizer Longitud del deslizamiento



uipangesturerecognizer swift 4 (5)

¿Alguna idea de si hay una manera de obtener la longitud de un gesto de deslizar o los toques para que pueda calcular la distancia?


Es imposible alejarse de un gesto de deslizamiento, ya que SwipeGesture activa el método donde puede acceder a la ubicación exactamente una vez, cuando el gesto ha finalizado.
Tal vez quiera usar un UIPanGestureRecognizer.

Si es posible usar el gesto pan, se guardaría el punto inicial de la bandeja, y si la bandeja ha terminado, calcule la distancia.

- (void)panGesture:(UIPanGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateBegan) { startLocation = [sender locationInView:self.view]; } else if (sender.state == UIGestureRecognizerStateEnded) { CGPoint stopLocation = [sender locationInView:self.view]; CGFloat dx = stopLocation.x - startLocation.x; CGFloat dy = stopLocation.y - startLocation.y; CGFloat distance = sqrt(dx*dx + dy*dy ); NSLog(@"Distance: %f", distance); } }


Para aquellos de nosotros que usamos Xamarin:

void panGesture(UIPanGestureRecognizer gestureRecognizer) { if (gestureRecognizer.State == UIGestureRecognizerState.Began) { startLocation = gestureRecognizer.TranslationInView (view) } else if (gestureRecognizer.State == UIGestureRecognizerState.Ended) { PointF stopLocation = gestureRecognizer.TranslationInView (view); float dX = stopLocation.X - startLocation.X; float dY = stopLocation.Y - startLocation.Y; float distance = Math.Sqrt(dX * dX + dY * dY); System.Console.WriteLine("Distance: {0}", distance); } }


Solo puede hacerlo de forma estándar: recuerde el punto táctil de touchBegin y compare el punto desde touchEnd.


En Swift

override func viewDidLoad() { super.viewDidLoad() // add your pan recognizer to your desired view let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panedView)) self.view.addGestureRecognizer(panRecognizer) } @objc func panedView(sender:UIPanGestureRecognizer){ var startLocation = CGPoint() if (sender.state == UIGestureRecognizerState.began) { startLocation = sender.location(in: self.view) } else if (sender.state == UIGestureRecognizerState.ended) { let stopLocation = sender.location(in: self.view) let dx = stopLocation.x - startLocation.x; let dy = stopLocation.y - startLocation.y; let distance = sqrt(dx*dx + dy*dy ); NSLog("Distance: %f", distance); if distance > 400 { //do what you want to do } } }

Espero que ayude a todos ustedes, pioneros de Swift


func swipeAction(gesture: UIPanGestureRecognizer) { let transition = sqrt(pow(gesture.translation(in: view).x, 2) + pow(gesture.translation(in: view).y, 2)) }