Подтвердить что ты не робот

Деактивировать замедление UIScrollView

Есть ли способ деактивировать замедление UIScrollView?

Я хочу разрешить пользователю прокручивать холст, но я не хочу, чтобы холст продолжал прокручиваться после того, как пользователь поднял палец.

4b9b3361

Ответ 1

Это можно сделать, используя метод делегата UIScrollView scrollViewWillBeginDecelerating, чтобы автоматически установить смещение содержимого в текущую позицию экрана.

Для реализации:

  • Назначьте делегат вашему объекту UIScrollView, если вы еще этого не сделали.
  • В файле реализации делегата .m добавьте следующие строки кода:

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{  
        [scrollView setContentOffset:scrollView.contentOffset animated:YES];   
    }
    

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