Хорошо, я ответил на это, реализовав свою собственную библиотеку, которая отражает динамику UIScrollView.
Что полезно в моем коде, так это то, что он не зависит от системы координат, скорости анимации и конкретных классов пользовательского интерфейса, которые вы используете. Он может быть легко вложен в класс по вашему выбору.
Интересное поведение прокрутки по умолчанию для iPhone. Если вы долго удерживаете палец и перемещаете его в разных направлениях, вы увидите, что для вычисления движения прокрутки используется только самое последнее направление.
Однако, если вы попытаетесь построить этот код самостоятельно, вы быстро обнаружите, что простое использование двух последних точек для вычисления направления движения не приведет к его сокращению. Вместо этого мой код хранит краткую историю касаний и использует линейную интерполяцию, чтобы определить, где касание «было бы» некоторое время назад. Эта интерполированная точка используется в качестве основы для вычисления вектора движения. Это приводит к очень приятному взаимодействию.
Код доступен на github, здесь: http://gist.github.com/100855. Он выпущен под лицензией BSD.