2015-04-24 9 views
19

Cihazımı iOS 8.3'e güncellediğimden beri, tamamlanacak etkileşimli bir geçiş elde edemedim.iOS 8.3 - Etkileşimli Geçişler UIView Animasyon Tamamlama Bloğunu Yoksayıyor mu?

transitionContext.completeTransition(!transitionContext.transitionWasCancelled()) 

tüm zaman en fazla çağrılmaz:

Ben satırını içeren animatör completion blokta, içinde completion blok cancelInteractiveTransition() veya finishInteractiveTransition(), çağırdığınızda anlaşılmaktadır. Bu, tüm uygulamanın dokunma ve döndürme olaylarına tepki vermeyi durdurmasına neden olur.

UIPercentDrivenInteractiveTransition'un bir alt sınıfını kullanıyorum. Pan jest tanıyıcı .Ended veya .Cancelled durumunda olduğunda cancelInteractiveTransition() ve finishInteractiveTransition() çağrılır.

Bu, iOS 8.3'deki bir hata mı (bu sorun yalnızca 8.3'ten sonra oldu), yoksa yanlış mı yapıyorum?

+0

Bu kesin sorunu yaşıyorum. Deneysel olarak bulduğum biraz daha fazla bilgi, bu sorunun sadece kullanıcı çok hızlı bir pan hareketi gerçekleştirdiğinde ortaya çıkmasıdır. Yavaşsa, tamamlama bloğu * * çağrılır. Ayrıca tamamlanma bloğu * bir kez çağrılmadığında, gelecekteki hareketlere (yavaş ya da hızlıca) tekrar çağrılmadığını öğrendim. Gerçek animasyon bloğu her seferinde iyi denir. – JVillella

+0

Uygulama durma olaylarına dokunmaktan vazgeçildiğinde işlemci kullanımını kontrol ettiniz mi? Ana iş parçacığı üzerinde yürütülen sonsuz bir döngü olabilir. – jkr

+0

Bu problemi teşhis ederken, anımsama ve sonlandırılmış durum olaylarının "animateTransition" bile koşmadan önce gerçekleştiğini fark ettim. Bir şekilde, 'animateTransition', düşündüğünüzden daha geç gerçekleşiyor. Böylece animasyon bile başlamadan iptal edildi/bitirildi! "UIPercentDrivenInteractionTransition" ın ".Changed" ve ".Ended" güncellemelerinin gerçekleşmediğinden emin olmak için bazı [kludgy GCD el çabukluğu] (http://stackoverflow.com/a/31497876/1271826) kullandığımda 'animDuration' çağrıldıktan sonraa kadar ve iyi görünüyor. – Rob

cevap

1

deneyin animationDidStop geçersiz kılmak ve orada

override func animationDidStop(anim: CAAnimation!, finished flag: Bool) { 
    self.transitionContext?.completeTransition(!self.transitionContext!.transitionWasCancelled()) 
    } 

Ben bu yardım umut onu aramak için!