检测UIScrollview底部到达

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测UIScrollview底部到达相关的知识,希望对你有一定的参考价值。

我有一个带图像的UIScrollView,当用户滚动到scrollview的末尾时,我想更新内容。这是我的代码,用于检测何时到达scrollview的底部:

以下代码在scrollViewDidScroll:委托中实现

CGFloat scrollViewHeight = imagesScrollView.bounds.size.height;
CGFloat scrollContentSizeHeight = imagesScrollView.contentSize.height;
CGFloat bottomInset = imagesScrollView.contentInset.bottom;
CGFloat scrollViewBottomOffset = scrollContentSizeHeight + bottomInset - scrollViewHeight;

if(imagesScrollView.contentOffset.y > scrollViewBottomOffset){


    [imagesView addSubview:imagesBottomLoadingView];

    [self downloadImages];

}

我的问题是,当用户滚动到底部时,我的函数被多次调用,但我想只调用一次。我尝试使用imagesScrollView.contentOffset.y == scrollViewBottomOffset但它不起作用并且不调用该函数

答案

你有没有想过添加一个布尔值。在第一次调用方法时更新它,也许当用户向上滚动时更新它。

另一答案

如果你想在swift中检测它们:

override func scrollViewDidScroll(scrollView: UIScrollView) {

if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) {
    //reach bottom
}

if (scrollView.contentOffset.y < 0){
    //reach top
}

if (scrollView.contentOffset.y >= 0 && scrollView.contentOffset.y < (scrollView.contentSize.height - scrollView.frame.size.height)){
    //not top and not bottom
}}
另一答案

卡洛斯的回答更好。

对于Swift 4.x,您必须更改方法名称:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if (scrollView.contentOffset.y + 1) >= (scrollView.contentSize.height - scrollView.frame.size.height) {
            //bottom reached
        }
    }
另一答案
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{
    float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
    if (bottomEdge >= scrollView.contentSize.height) 
    {
        // we are at the end
    }
}
另一答案

实施scrollViewDidScroll:并检查contentOffset以达到目的

另一答案

有时你必须在条件中使用+1,因为contentSize.height会给你一些小数,所以如果你使用它,你就避免它......

override func scrollViewDidScroll(scrollView: UIScrollView) {

   if (scrollView.contentOffset.y + 1) >= (scrollView.contentSize.height - scrollView.frame.size.height) {
       //bottom reached
   }
}

以上是关于检测UIScrollview底部到达的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView,到达滚动视图的底部

scrollViewDidScroll(_ scrollView: UIScrollView) 到达底部后如何保持 UIButton 浮动?

UIScrollView 仅检测底部的滑动

如何在 iOS 中检测 UITextView (UIScrollView) 故障的底部

检测 RecyclerView 滚动时何时到达最底部位置

UIScrollView 切断底部内容