Вы на правильном пути. Когда вы устанавливаете себя в качестве делегата анимации в предоставленном вами коде, вы устанавливаете себя в качестве делегата для ВАШЕГО блока анимации. Поскольку вы не указали продолжительность анимации, ваш didStopSelector будет срабатывать немедленно.
Не существует "поддерживаемого" способа сделать это. И практически любое решение не гарантирует будущую совместимость.
Без сомнения, Apple упаковывает анимацию выбора в свои собственные блоки анимации. Вы можете сделать некоторую творческую отладку и определить точную продолжительность их анимации, и жестко закодировать свой блок анимации для соответствия. Как правило, анимации UIKit от Apple имеют фиксированную продолжительность, независимо от расстояния, которое необходимо пройти. (довольно часто около 0,33 секунды).
Я бы попробовал это ...
Создайте метод категории для UIView и переопределите setAnimationDuration: и установите точку останова внутри этого метода. (Вероятно, лучше отключить его, пока вы не будете готовы к нему, так как это будет вызываться подавляющее количество раз.)
-При вызове вашего метода animateToRow: torRow: inComponent: метод включите точку останова и просмотрите значение, переданное блоком анимации просмотров средства выбора.
Установка метода категории, как я сказал, эффективно устранит возможность устанавливать длительности для блоков анимации UIView, я не могу гарантировать, что не будет никаких побочных эффектов, и он абсолютно предназначен только для отладки.