С тех пор как я обновил свое устройство до iOS 8.3, я не смог получить интерактивный переход к завершению.iOS 8.3 - Интерактивные переходы игнорируют блок завершения анимации UIView?
Оказывается, что, когда я называю cancelInteractiveTransition()
или finishInteractiveTransition()
, тем completion
блок в блоке completion
аниматора, который содержит строку:
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
не вызывается вообще большую часть времени. Это заставляет все приложение перестать реагировать на события касания и вращения.
Я использую подкласс UIPercentDrivenInteractiveTransition
. cancelInteractiveTransition()
и finishInteractiveTransition()
вызывается, когда его распознающий распознавание жеста находится в состоянии .Ended
или .Cancelled
.
Это ошибка в iOS 8.3 (так как эта проблема произошла со мной после 8.3), или я делаю это неправильно?
У меня возникла эта проблема. Немного дополнительной информации, которую я нашел эмпирически, является то, что эта проблема возникает только тогда, когда пользователь выполняет очень быстрый жест. Если он медленный, вызывается блок завершения * *. Я также узнал, что после того, как блок завершения * не будет вызван, он никогда не будет снова вызван на будущие жесты (независимо от медленного или быстрого). Тем не менее, фактический блок анимации называется тонким. – JVillella
Вы проверили загрузку процессора, когда приложение перестало реагировать на события касания? Может быть, в главном потоке выполняется бесконечный цикл. – jkr
Когда я диагностировал эту проблему, я заметил, что смена жестов и прекращение государственных событий происходили до того, как «animateTransition» даже побежал. Так или иначе, «animateTransition» происходит позже, чем можно было подумать. Таким образом, анимация была отменена/закончена до ее начала! Когда я использовал некоторые [kludgy GCD ловкость руки] (http://stackoverflow.com/a/31497876/1271826), чтобы убедиться, что обновления '.Changed' и' .Ended' 'UIPercentDrivenInteractionTransition' не произошли пока не вызывается 'animationDuration', и похоже, что все в порядке. – Rob