6

您可以通过将其添加UIRefreshControl集合的子视图UICollectionView来添加(或任何其他UIScrollView):

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];

当集合视图布局具有UICollectionViewScrollDirectionHorizontal.

我尝试覆盖layoutSubviews将刷新控件放在左侧,但它不会以这种方式跟踪滚动进度。我可以欺骗它使用水平布局吗?

4

2 回答 2

7

我找不到任何现有的解决方案,所以我扩展ODRefreshControl了水平布局支持:

在此处输入图像描述

我需要 MonoTouch (C#) 中的解决方案,所以我从源代码移植 ODRefreshControl 开始,然后修补它以使用水平布局。

完整的 C# 源代码在这里,应该可以直接将其移植回 Objective C。
我所做的只是在这里和那里添加一个实用函数和一些条件。

于 2012-12-12T04:51:37.173 回答
1

您可以通过实现 UIScrollViewDelegate 方法来实现这一点

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
     CGPoint offset = scrollView.contentOffset;
     CGRect bounds = scrollView.bounds;
     CGSize size = scrollView.contentSize;
     UIEdgeInsets inset = scrollView.contentInset;
     float y = offset.x + bounds.size.width - inset.right;
     float h = size.width;


    float reload_distance = 75; //distance for which you want to load more
    if(y > h + reload_distance) {
       // write your code getting the more data
       NSLog(@"load more rows");

    }
}
于 2014-04-23T06:14:22.260 回答