Деактивировать замедление UIScrollView
Есть ли способ деактивировать замедление UIScrollView?
Я хочу разрешить пользователю прокручивать холст, но я не хочу, чтобы холст продолжал прокручиваться после того, как пользователь поднял палец.
Ответы
Ответ 1
Это можно сделать, используя метод делегата UIScrollView
scrollViewWillBeginDecelerating
, чтобы автоматически установить смещение содержимого в текущую позицию экрана.
Для реализации:
Voila! Больше нет автоматического прокрутки.
Ответ 2
Для iOS 5.0 или новее существует лучший метод, чем вызов setContentOffset:animated:
.
Внедрить метод делегата scrollViewWillEndDragging:withVelocity:targetContentOffset:
в файле .m
:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
*targetContentOffset = scrollView.contentOffset;
}
Назначение текущего смещения на targetContentOffset
останавливает UIScrollView
от автоматической прокрутки.
Ответ 3
Вы можете очень быстро увеличить скорость торможения. С бесконечной скоростью он немедленно остановился. Попробуйте установить скорость для этих констант:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
и
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Если быстро все еще недостаточно быстро для вас, UIScrollViewDecelerationRateFast просто typedef'ed как float, поэтому вы можете просто умножить его на 10 или около того, чтобы ускорить его еще больше.
Ответ 4
Просто установите для свойства decelerationRate значение 0
Это отключит свойство автоматической прокрутки. Но имейте в виду, что взаимодействие с пользователем станет плохим, если размер содержимого scrollview велик.
Ответ 5
Код предыдущей версии: ↓
scrollView.decelerationRate = UIScrollView.DecelerationRate.fast
Код текущей версии 4.2: ↓
scrollView.decelerationRate = UIScrollViewDecelerationRateFast