Ich habe ein kleines Problem mit dem UIPanGestureRecognizer. Der Erkenner nicht den Zustand UIGestureRecognizerStateEnded melden, wenn der Benutzer auf den oben links geschwenkt (bedeutet negative x und y Richtungen)UIPanGestureRecognizer wechselt nicht in den Status "Ende" oder "Abbrechen", wenn der Benutzer x und y in negativer Richtung paginiert hat
die Zustandsänderungen zu UIGestureRecognizerStateEnded wenn jede Richtung positiv ist, wenn der Benutzer seinen Finger hebt, aber es hört einfach auf, Aktionen zu melden, wenn beide Richtungen negativ oder Null sind.
Das ist schlecht, weil ich einige Overlay-Ansichten ausblenden, solange der Benutzer etwas herum schleppt und diese Ansichten im Fehlerfall nicht zurückgeben.
Natürlich könnte ich einen NSTimer einrichten, um die Überlagerung nach einigen Zeit automatisch wieder anzuzeigen, aber ich kann keinen offensichtlichen Fehler in meinem Code sehen und ich will es sauber.
Gibt es etwas, das ich vermisst habe? Ist es ein Apple Bug?
Initialisierung ist wie folgt:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
Die Handhabung Funktion sieht wie folgt aus:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
Dies ist mir in der Vergangenheit passiert, als ich versehentlich den Gestenerkenner entfernt/in eine andere Ansicht verschoben habe. Es wird einfach still werden, sobald Sie es tun. Dies ist in Ihrem Fall nicht der Fall? – Kalle
Nicht sicher, was genau los ist, aber versuchen Sie, Statusänderungen zu protokollieren, indem Sie alle möglichen UIGestureRecognizerStates berücksichtigen, um zu sehen, was während der Interaktion passiert. –
Ist mir auch passiert. Das Verschieben von 'uiview.addGestureRecognizer' aus den' viewDidLayoutSubviews' meines VCs nach 'viewWillAppear' löste dies, wobei immer noch nach einer Rechtfertigung gesucht wurde. – Jokester