Was ich erreichen möchte, ist nur eine Linie zwischen dem Punkt, wo der Benutzer die Geste gestartet hat und dem Punkt, wo er damit endete. Ich dachte, dass UIGestureRecognizerStateEnded der Zustand ist, den ich brauche, aber es wird mehrmals aufgerufen. Ich wäre wirklich dankbar, wenn mir jemand erklären könnte, warum das passiert und wie man den letzten Punkt erreicht.Warum feuert UIPanGestureRecognizer mehrmals mit UIGestureRecognizerStateEnded ab?
- (void)drawingViewDidPan:(UIPanGestureRecognizer*)sender
{
CGPoint currentDraggingPosition = [sender locationInView:_drawingView];
if(sender.state == UIGestureRecognizerStateBegan){
_prevDraggingPosition = currentDraggingPosition;
NSLog(@"---");
}
if(sender.state != UIGestureRecognizerStateEnded){
[self drawLine:_prevDraggingPosition to:currentDraggingPosition];
NSLog(@"???");
}
_prevDraggingPosition = currentDraggingPosition;
}
das Protokoll:
2016-08-05 17: 14: 46,086 X [2518: 356.899] --- 2016.08.05 17: 14: 46,092 X [2518: 356899] ??? 2016-08-05 17: 14: 46.127 X [2518: 356899] ??? 2016-08-05 17: 14: 46.153 X [2518: 356899] ??? 2016-08-05 17: 14: 46.177 X [2518: 356899] ??? 2016-08-05 17: 14: 46.205 X [2518: 356899] ??? 2016-08-05 17: 14: 46.226 X [2518: 356899] ??? 2016-08-05 17: 14: 46.246 X [2518: 356899] ??? 2016-08-05 17: 14: 46,279 X [2518: 356899] ??? ...
Was ist Ihre Log-Ausgabe, die es deutlich machen sollte, wenn es mehrere Male ausgelöst wird. derzeit ist es nicht sicher. – Shubhank
Ich habe die Frage aktualisiert – AOY
Ich bin mir nicht sicher. Vielleicht verwende ich nur eine falsche Gestenerkennung – AOY