有水平的UIRefreshControl吗?

时间:2012-12-10 23:01:31

标签: objective-c uiscrollview ios6 uikit uirefreshcontrol

您可以adding it to collection's subviewsUIRefreshControl添加到UICollectionView(或任何UIScrollView):

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

当集合视图布局具有UICollectionViewScrollDirectionHorizontal时,这不起作用。

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

2 个答案:

答案 0 :(得分:7)

我找不到任何现有的解决方案,因此我使用水平布局支持扩展ODRefreshControl

enter image description here

我需要在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");

    }
}