zoukankan      html  css  js  c++  java
  • 关于TableVIew的上下滚动如何探测其边界

    UITableView is a subclass of UIScrollView, and UITableViewDelegate conforms to UIScrollViewDelegate. So the delegate you attach to the table view will get events such as scrollViewDidScroll:, and you can call methods such as contentOffset on the table view to find the scroll position.

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {   
        CGFloat height = scrollView.frame.size.height;
    
        CGFloat contentYoffset = scrollView.contentOffset.y;
    
        CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;
    
        if(distanceFromBottom < height) 
        {
            NSLog(@"end of the table");
        }
    }
    - (void)scrollViewDidScroll:(UIScrollView *)aScrollView {
        CGPoint offset = aScrollView.contentOffset;
        CGRect bounds = aScrollView.bounds;
        CGSize size = aScrollView.contentSize;
        UIEdgeInsets inset = aScrollView.contentInset;
        float y = offset.y + bounds.size.height - inset.bottom;
        float h = size.height;
        // NSLog(@"offset: %f", offset.y);   
        // NSLog(@"content.height: %f", size.height);   
        // NSLog(@"bounds.height: %f", bounds.size.height);   
        // NSLog(@"inset.top: %f", inset.top);   
        // NSLog(@"inset.bottom: %f", inset.bottom);   
        // NSLog(@"pos: %f of %f", y, h);
    
        float reload_distance = 10;
        if(y > h + reload_distance) {
            NSLog(@"load more rows");
        }
    }

    上述代码可以添加到tableViewDelegate的类当中~

    下面是我自己实现的代码,这样按钮滚动不过超过tableview的范围了

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView{
        CGFloat height = scrollView.frame.size.height;
        
        CGFloat contentYoffset = scrollView.contentOffset.y;
        
        CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;
        
        if(distanceFromBottom < height)
        {
    //        NSLog(@"end of the table");
            CGFloat realOffsetY = scrollView.contentSize.height - height;
            [scrollView setContentOffset:CGPointMake(0, realOffsetY)];
    
        }else if(contentYoffset < 0){
    //        NSLog(@"out of the table head");
    //        scrollView.scrollsToTop = YES;
            [scrollView setContentOffset:CGPointMake(0, 0)];
        }
    }
    
    #pragma mark - button action
    - (IBAction)upperButtonClick:(id)sender {
        NSLog(@"Upper Button was Clicked");
        CGPoint contentOffset = self.tableView.contentOffset;
        contentOffset.y -= OFFSET_VALUE; // Adjust this value as you need
        [self.tableView setContentOffset:contentOffset animated:YES];
    }
    
    - (IBAction)downButtonClick:(id)sender {
        NSLog(@"Down Button was Clicked");
        CGPoint contentOffset = self.tableView.contentOffset;
        contentOffset.y += OFFSET_VALUE; // Adjust this value as you need
        [self.tableView setContentOffset:contentOffset animated:YES];
    }
  • 相关阅读:
    linux挂载
    kafka
    使用python27+flask
    arcpy 10.8计算最短路径,并复制出结果
    arcgis pro2.5使用试用
    arcgis engine create featureclass , gp工具
    python和c#的 opencv文字区域识别
    C#调用带参数并输出控制台的python的EXE程序
    arcgis10.8中 python27打包exe文件
    arcgis engine指定范围导出屏幕图片
  • 原文地址:https://www.cnblogs.com/scaptain/p/4023957.html
Copyright © 2011-2022 走看看