2013-05-03 49 views
7

我在UITableView上實現UIRefreshControl時遇到了一些麻煩。UITableView拖動UIRefreshControl的距離

除了事實上,我必須滾動屏幕的80%才能觸發UIRefreshControl,因此一切正常。有時我甚至無法觸發它,因爲屏幕底部有一個標籤欄,當手指到達它時取消滾動動作。

我已經看過其他應用程序,即蘋果的'郵件',其中UIRefreshControl滾動只有30%的屏幕後觸發。

我錯過了什麼?真的需要幫助這個!

在此先感謝

回答

1

你可能需要在處理您刷新據此,因爲UIRefreshControl不能修改無法使用UIRefreshControl,只是利用scrollViewDidScroll(或tableViewDidScroll如果的tableView)。

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

感謝您的幫助,但我相信UIRefreshControl存在被使用和'郵件'使用它。我已經意識到,在我的應用程序中,與手指輕掃相比,UITableView的滾動距離比'Mail'短得多,即對於相同的手指輕掃距離,'Mail'UITableView的滾動次數遠遠超過我的應用程序的UITableViews。我想知道爲什麼...... – Joaocdn 2013-05-03 16:20:22

2

我有一個類似的問題,這很可能是你的原因。 對於我碰巧我牆根的滾動指示讓我無法看到問題的明顯原因:UIScrollView的高度比其superView ...

雙大得多檢查UIScrollView的高度,因爲「拖動距離「只是該高度的百分比。 UITableView也一樣,因爲它是UIScrollView的子類。

編輯: 看來,這不是重現此問題的唯一方法,因爲所需的拖動距離觸發複習是在越野車的方式來計算。有關更多信息,請參閱this question

但一般來說,如果您的UIScrollView的高度與其父容器(例如屏幕本身)不同,就會發生這種情況。

+0

'UISefrollView'支持'UIRefreshControl',從iOS 10開始。在此之前,你有一個嚴重的漂移。參見[SO 29791995](http://stackoverflow.com/a/43288926/218152) – SwiftArchitect 2017-04-08 01:00:16