Dieses Video zeigt das Problem, das ich habe. Ссылка
Ich versuche, einen benutzerdefinierten interaktiven Push-Übergang mit einem UIPanGestureRecognizer zu erstellen. Ich habe einen interaktiven Transitions-Delegaten (mit UIPercentDrivenInteractiveTransition) und einen Transition-Animator.
So steuert die Schwenkgeste den Übergang:
%Vor%Der UINavigationControllerDelegate behandelt den Verkauf beider Transition-Delegate-Objekte, der ausgelöst wird, wenn pushViewController: aufgerufen wird.
Der Übergang Animator hat eine sehr einfache Animation:
%Vor%In dem Video endet die Schwenkgeste zu etwa 60%, wodurch der Aufruf finishInteractiveTransition ausgelöst wird. Alles verläuft reibungslos, bis der Abschlussblock in der blockbasierten UIView-Animation completeTransition aufruft. Wenn diese Methode aufgerufen wird, animiert der toViewController den letzten Teil der Push-Animation unnötigerweise neu. Im Video ist die rote Ansicht das Fenster. Die Animationsdauer beträgt 3 Sekunden.
Ich kann nicht herausfinden, warum das passiert. Es sieht so aus, als ob die Animation zwischen dem Punkt, an dem die Geste endet und wenn completeTransition: aufgerufen wird, zweimal passiert. Irgendwelche Ideen?
Ab iOS 7.1 kann ich dies im Simulator reproduzieren, aber nicht auf einem tatsächlichen Gerät. Wie auch immer, es scheint einen Workaround zu geben:
%Vor%Es gibt ein Radar für diesen Fehler: rdar: // 14675246
Was passiert, wenn Sie [transitionContext completeTransition:YES];
sofort nach dem Aufruf von finishInteractiveTransition
wie folgt aufrufen:
Ich habe ein Beispiel auf github , das ohne den Fehler funktioniert. Lass es mich wissen, wenn du weitere Fragen hast.
Oder als matt beobachtet hier , können Sie entweder die completeTransition
entweder verschieben oder den benutzerdefinierten Interaktions-Controller selbst steuern:
Ich habe etwas Ähnliches gesehen. Ich habe zwei mögliche Problemumgehungen. Eine besteht darin, die verzögerte Leistung im Animationsvervollständigungshandler zu verwenden:
%Vor%Die andere Möglichkeit ist: Verwenden Sie keine percent-drive Animation! Ich hatte noch nie so ein Problem, wenn ich die interaktive benutzerdefinierte Animation manuell selbst ausführte.
Tags und Links objective-c ios ios7 uiviewcontroller