Есть ли способ деактивировать замедление UIScrollView?
Я хочу разрешить пользователю прокручивать холст, но я не хочу, чтобы холст продолжал прокручиваться после того, как пользователь поднял палец.
Есть ли способ деактивировать замедление UIScrollView?
Я хочу разрешить пользователю прокручивать холст, но я не хочу, чтобы холст продолжал прокручиваться после того, как пользователь поднял палец.
Это можно сделать, используя метод делегата UIScrollView
scrollViewWillBeginDecelerating
, чтобы автоматически установить смещение содержимого в текущую позицию экрана.
Для реализации:
UIScrollView
, если вы еще этого не сделали.В файле реализации делегата .m
добавьте следующие строки кода:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
Voila! Больше нет автоматического прокрутки.
Для 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
от автоматической прокрутки.
Вы можете очень быстро увеличить скорость торможения. С бесконечной скоростью он немедленно остановился. Попробуйте установить скорость для этих констант:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
и
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Если быстро все еще недостаточно быстро для вас, UIScrollViewDecelerationRateFast просто typedef'ed как float, поэтому вы можете просто умножить его на 10 или около того, чтобы ускорить его еще больше.
Просто установите для свойства decelerationRate значение 0
Это отключит свойство автоматической прокрутки. Но имейте в виду, что взаимодействие с пользователем станет плохим, если размер содержимого scrollview велик.
Код предыдущей версии: ↓
scrollView.decelerationRate = UIScrollView.DecelerationRate.fast
Код текущей версии 4.2: ↓
scrollView.decelerationRate = UIScrollViewDecelerationRateFast