Обнаружение прокрутки UIScrollView - PullRequest
2 голосов
/ 26 сентября 2010

У меня есть UIScrollView в представлении UIViewController, которое прокручивается по горизонтали. Как я могу определить, находится ли свиток слева или справа или где-то посередине?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Возможно, вам понадобится метод scrollViewDelegate, такой как ниже.

ObjC

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"Point: %@", NSStringFromCGPoint(scrollView.contentOffset));
}

Swift

override func scrollViewDidScroll(scrollView: UIScrollView) {
    println(scrollView.contentOffset)
}

Посмотрите на apple docs.

Также убедитесь, что ваш делегат scrollview настроен на your_scroll_view.delegate = self;, и ваш контроллер представления должен соответствовать <UIScrollViewDelegate>

1 голос
/ 26 сентября 2010

GameBit здесь верен, но для уточнения -

UIScrollView имеет переменную-член contentOffset, которая описывает, сколько пикселей от источника прокручивается просмотром прокрутки.Положительное значение - это прокрутка вправо, отрицательное - это прокрутка влево.

Находится ли ваш UIScrollView в постраничном режиме?если это так, то это поможет:

 CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
0 голосов
/ 13 сентября 2014

Это работает для меня в горизонтальном UIScrollView

  • Соответствует UIScrollViewDelegate
  • В вашем ViewController - yourScrollView.delegate = self

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
     var currentPage = yourScrollView.contentOffset.x / yourScrollView.bounds.size.width;
    }
    

Не используйте scrollViewDidScroll, поскольку вам нужно дождаться окончания прокрутки

...