Отключить замедление UIScrollView - PullRequest
36 голосов
/ 09 июля 2009

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

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

Ответы [ 5 ]

64 голосов
/ 07 августа 2009

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

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

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

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

Вуаля! Нет больше автопрокрутки.

38 голосов
/ 17 октября 2012

Для 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 от автоматической прокрутки.

20 голосов
/ 09 июля 2009

Вы можете просто увеличить скорость замедления до очень высокой. С бесконечной скоростью это немедленно прекратилось бы. Попробуйте установить скорость для этих констант:

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

и

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

Если fast по-прежнему недостаточно для вас, UIScrollViewDecelerationRateFast просто определяется как float, так что вы можете просто умножить его в 10 раз или около того, чтобы ускорить его еще больше.

0 голосов
/ 17 апреля 2019

Код предыдущей версии: ↓

scrollView.decelerationRate = UIScrollView.DecelerationRate.fast

Код текущей версии 4.2: ↓

scrollView.decelerationRate = UIScrollViewDecelerationRateFast

0 голосов
/ 28 марта 2018

Просто установите для свойства decelerationRate значение 0

Это отключит свойство автоматической прокрутки. Но имейте в виду, что взаимодействие с пользователем станет плохим, если размер содержимого scrollview большой.

...