2013-05-03 14 views
7

UITableViewでUIRefreshControlを実装する際に問題があります。UITableViewとUIRefreshControlとの距離を移動

UIRefreshControlがトリガされるために画面の80%のようなものをスクロールしなければならないということを除いて、すべてうまくいきます。画面の下部にタブバーがあり、指が届くとスクロールする動きがキャンセルされるため、トリガーできないこともあります。

他のアプリ、つまりAppleの「Mail」を見てきました。ここでは、画面の30%しかスクロールしないとUIRefreshControlがトリガーされます。

私には何が欠けていますか?本当にこの1つの助けが必要です!あなたはおそらくUIRefreshControlを変更することはできませんので、それに応じてリフレッシュを扱う上でUIRefreshControlを使用して、ちょうど(のtableView場合またはtableViewDidScroll)scrollViewDidScrollを利用しないようにする必要があり、事前

答えて

1

感謝。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height) 
    { 
     // Refresh from here 
    } 
} 
+0

助けてくれてありがとう、しかし私はUIRefreshControlが使用され、 'Mail'useそれが使用されると信じています。私のアプリでは、指のスワイプに比べてUITableViewのスクロール距離が 'メール'のそれよりもずっと短くなっていることが分かりました。つまり、同じスワイプの距離で、 'Mail' UITableViewは私のAppのUITableViewよりもスクロールします。私はなぜだろう... – Joaocdn

2

私も同様の問題がありましたが、それはあなたにとって同じ理由です。私にとって は、私は、問題の明白な原因を見て、私はできない作りスクロールインジケータを隠していることが起こる:UIScrollViewの身長の高さは、そのsuperView ...

ダブルあなたのUIScrollViewをチェックするよりもはるかに大きい」」理由それはちょうどその高さのパーセンテージです。 UIScrollViewの子クラスなので、同じことがUITableViewにもなります。

EDIT: 補習をトリガーするために必要なドラッグ距離はバギー方法で計算されているので、これは、この問題を再現するための唯一の方法ではないようです。詳細はthis questionを参照してください。

一般に、あなたのUIScrollViewの高さが親コンテナ(たとえば、画面自体)と異なる場合、それが発生します。

+0

'UIRefreshControl'の' UIScrollView'サポートは、iOS 10から始まります。それ以前は、あなたは厳しいドリフトがありました。 [SO 29791995](http://stackoverflow.com/a/43288926/218152)を参照してください。 – SwiftArchitect

関連する問題