Qualche idea se esiste un modo per ottenere la durata di un gesto o dei tocchi di scorrimento in modo da poter calcolare la distanza?UISwipeGestureRecognizer Lunghezza del tratto
risposta
È impossibile ottenere una distanza da un gesto di scorrimento, perché SwipeGesture attiva il metodo in cui è possibile accedere alla posizione esattamente una volta, al termine del gesto.
Forse si desidera utilizzare un UIPanGestureRecognizer.
Se è possibile utilizzare il gesto di panoramica, si salverà il punto iniziale della panoramica e, se la panoramica è terminata, calcolare la distanza.
- (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);
}
}
È possibile farlo solo in un modo standard: ricordare il punto di tocco del touchBin e confrontare il punto da touchEnd.
Per quelli di noi utilizzando 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);
}
}
In 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)
}
func panedView(sender:UIPanGestureRecognizer){
if (sender.state == UIGestureRecognizerState.Began) {
startLocation = sender.locationInView(self.view);
}
else if (sender.state == UIGestureRecognizerState.Ended) {
let stopLocation = sender.locationInView(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
}
}
}
Speranza che aiuta tutto quello che pionieri Swift
func swipeAction(gesture: UIPanGestureRecognizer) {
let transition = sqrt(pow(gesture.translation(in: view).x, 2)
+ pow(gesture.translation(in: view).y, 2))
}
Nota: le risposte al solo codice sono sconsigliate. Per favore aggiungi un po 'di spiegazione. – GhostCat
- 1. Problema gestuale: UISwipeGestureRecognizer + UISlider
- 2. Implementazione del tratto dimensionato
- 3. Tratto associato utilizzando il tipo associato del tratto come parametro
- 4. Android - tratto all'interno del percorso
- 5. Approfondimento delle applicazioni integrazione del tratto
- 6. CABasicAnimazione - Impostazione della posizione del tratto iniziale
- 7. Qual è lo schema del tratto Laravel?
- 8. Lunghezza massima del byte []?
- 9. Metodo di override del PHP del tratto della classe genitore
- 10. Lunghezza massima attributo del titolo
- 11. Calcolare lunghezza del contenuto POST
- 12. Lunghezza del codice a barre
- 13. limitare la lunghezza del TextView
- 14. La lunghezza del valore della stringa supera la lunghezza configurata nella mappatura/parametro
- 15. Cos'è un tratto sigillato?
- 16. canEqual() nei scala.Equals tratto
- 17. Scala sintassi tratto
- 18. Problema di un tratto del modello avviabile di Laravel
- 19. Utilizzo del metodo tratto nel costruttore della classe
- 20. SVG: il tratto non scalato all'interno del motivo non funziona?
- 21. Riferimento a un argomento del costruttore da un tratto
- 22. Come disegnare un tracciato con larghezza del tratto variabile
- 23. Doppio colore del tratto di cerchio in SVG
- 24. PHP: strlen restituisce la lunghezza del carattere anziché la lunghezza del byte
- 25. Ereditare un tratto due volte
- 26. MySQL: Ordina per dimensione del campo/lunghezza
- 27. Lunghezza coda del disco su Mac OSX
- 28. Controllare la lunghezza del valore di input
- 29. zh accorciare la lunghezza del percorso corrente
- 30. Calcolo della lunghezza del dizionario in Flex
Penso che si può solo prendere la direzione fr om UISwipeGestureRecognizer. Forse puoi ottenere la posizione dove inizia il tocco e dove finisce e calcolare la lunghezza da quello. – picknick