UIScrollView滚动检测

时间:2010-09-26 06:38:57

标签: iphone cocoa-touch xcode interface-builder uiscrollview

我在UIScrollView视图中有UIViewController水平滚动。如何检测滚动是在左端还是右端还是在中间的某个位置?

3 个答案:

答案 0 :(得分:2)

您可能需要查看下面的scrollViewDelegate方法。

<强> ObjC

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

<强>夫特

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

查看apple docs.

另外,请务必设置您的scrollview委托your_scroll_view.delegate = self;,并且您的视图控制器必须符合<UIScrollViewDelegate>

答案 1 :(得分:1)

GameBit在这里是正确的,但要详细说明 -

UIScrollView有一个成员变量contentOffset,它描述了scrollview滚动的原点的像素数。正值是向右滚动,负数是向左滚动。

您的UIScrollView是否处于分页模式?如果是这样,这将有所帮助:

 CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

答案 2 :(得分:0)

这适用于横向UIScrollView

  • 符合UIScrollViewDelegate
  • 在您的ViewController中 - yourScrollView.delegate = self

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

请勿使用scrollViewDidScroll,因为您需要等到滚动结束