您可以adding it to collection's subviews将UIRefreshControl
添加到UICollectionView
(或任何UIScrollView
):
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];
当集合视图布局具有UICollectionViewScrollDirectionHorizontal
时,这不起作用。
我尝试覆盖layoutSubviews
以将刷新控制放在左侧,但它不会以这种方式跟踪滚动进度。我可以欺骗它使用水平布局吗?
答案 0 :(得分:7)
我找不到任何现有的解决方案,因此我使用水平布局支持扩展ODRefreshControl
:
我需要在MonoTouch(C#)中使用解决方案,所以我开始使用源代码移植ODRefreshControl,然后使用水平布局移植patched it to work。
完整的C#源代码是here,将它移回目标C应该很简单。
我所做的就是在这里和那里添加一个实用功能和一些条件。
答案 1 :(得分: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");
}
}