Еще раз спасибо mag_zbc!
Это действительно помогло мне найти решение.
Я слишком усложнил анимацию, проверяя текущую позицию как после того, как пользователь закончил перетаскивание, так и когда анимацияготово.
Чтобы решить эту проблему, я просто проверил текущее смещение в scrollViewDidEndDecelerating:
:
-Если окончательное смещение было одним из трех правильных местоположений (автоматическое смещение завершено непрерывно), то выполнитеничего.
-Если смещение не было одним из правильных местоположений (анимация была прервана), затем двигайтесь снова.