iOS 7 benutzerdefinierte Übergangsfehler

8

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?

    
Erik Villegas 28.10.2013, 02:35
quelle

4 Antworten

19

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

    
Nicky 09.04.2014 16:08
quelle
2

Was passiert, wenn Sie [transitionContext completeTransition:YES]; sofort nach dem Aufruf von finishInteractiveTransition wie folgt aufrufen:

%Vor%     
ryan cumley 28.10.2013 04:55
quelle
1

Ich habe ein Beispiel auf github , das ohne den Fehler funktioniert. Lass es mich wissen, wenn du weitere Fragen hast.

    
just.jimmy 22.11.2013 03:07
quelle
0

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.

    
Rob 29.01.2015 15:27
quelle