2012-12-10 19 views
5

あなたはadding it to collection's subviewsによってUICollectionView(またはそのことについては、UIScrollView)にUIRefreshControlを追加することができます。水平なUIRefreshControlはありますか?

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

コレクションビューのレイアウトがUICollectionViewScrollDirectionHorizontalを持っているとき、これは動作しません。

layoutSubviewsを無効にして、左にリフレッシュ制御を入れてみましたが、スクロールの進行状況をこのように追跡しませんでした。水平レイアウトで作業することを騙すことはできますか?

+1

を実装することによって、これを達成することができますそのため、ドキュメントはUITableViewに明示的にリンクしています。 – Daniel

+0

@ダニエルこれは本当ですが、私はこのように多くの人々がこのようにしているのを見ています。私はまた、自分のアプリがテーブルビューなしで 'UIRefreshControl'を使って拒否されたという単一の投稿を見たことがありません。 –

答えて

7

私は、水平レイアウトのサポートでODRefreshControlを拡張して、私は、既存のソリューションを見つけることができませんでした:

enter image description here

私はMonoTouchで(C#の)にソリューションを必要と私はソース-移植ODRefreshControlによって開始し、その後patched it to workと水平レイアウト。

完全なC#のソースコードは、それは私がやったすべてがここにあるの効用関数と、いくつかの条件を追加した目的C.
にバックポート、それをすることは簡単であるべき、hereです。

+1

こんにちは、objective-cであなたの拡張コードを提供できますか?ありがとうございました! – Leo

+0

@ダンObj-Cで作成したコードを入力してください。お願いします。 – hyd00

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"); 

    } 
} 
関連する問題