2013-05-03 10 views
7

Ich habe einige Probleme bei der Implementierung eines UIRefreshControl auf einem UITableView.UITableView ziehen Abstand mit UIRefreshControl

Alles funktioniert gut außer der Tatsache, dass ich etwas wie 80% des Bildschirms scrollen muss, damit das UIRefreshControl ausgelöst wird. Manchmal kann ich es nicht einmal auslösen, da sich am unteren Bildschirmrand eine Tab-Leiste befindet, die die Scroll-Bewegung aufhebt, wenn der Finger sie erreicht.

Ich habe mir andere Apps angeschaut, nämlich Apples "Mail", wo das UIRefreshControl nach dem Scrollen nur 30% des Bildschirms ausgelöst wird.

Was fehlt mir? Brauche wirklich Hilfe hier!

Vielen Dank im Voraus

Antwort

1

Sie müssen wahrscheinlich nicht UIRefreshControl verwenden und nur scrollViewDidScroll (oder tableViewDidScroll wenn eine Tableview) nutzen behandeln Ihre refresh dementsprechend seit UIRefreshControl nicht geändert werden kann.

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

Vielen Dank für die Hilfe, aber ich glaube, dass UIRefreshControl verwendet wird, und "Mail" verwendet es. Ich habe festgestellt, dass in meiner App die UITableView Scrolling Distance im Vergleich zum Finger Swipe viel kürzer ist als bei 'Mail', d. H., Für die gleiche Finger Swipe Abstand scrollt die 'Mail' UITableView viel mehr als die UITableViews meiner App. Ich frage mich, warum ... – Joaocdn

2

Ich hatte ein ähnliches Problem und es ist durchaus möglich, dass die gleiche Ursache für Sie ist. Für mich kommt vor, dass ich die Scroll-Anzeige ausgeblendete mich nicht in der Lage machen die offensichtliche Ursache des Problems zu sehen: die UIScrollView ‚s Höhe ist viel größer als seine superView ...

Verdoppeln Sie Ihre UIScrollView überprüfen‘, weil s Höhe der " Schleppabstand "es ist nur ein Prozentsatz dieser Höhe. Das gleiche gilt für UITableView auch, da es eine Kindklasse von UIScrollView ist.

EDIT: Es scheint, dass dies nicht der einzige Weg ist, um dieses Problem zu reproduzieren, da der erforderliche Schleppabstand der Auffrischung auslösen wird in einer Buggy Art und Weise berechnet. Weitere Informationen finden Sie unter this question.

Aber im Allgemeinen wird es passieren, wenn die Höhe des UIScrollView ist anders als seine übergeordneten Container (z. B. der Bildschirm selbst).

+0

'UIScrollView' Unterstützung für 'UIRefreshControl' startet bei iOS 10. Zuvor hatte man eine starke Drift. Siehe [SO 29791995] (http://stackoverflow.com/a/43288926/218152) – SwiftArchitect