2013-05-03 14 views
7

Mam problem z zaimplementowaniem UIRefreshControl na UITableView.UITableView odległość przeciągania z UIRefreshControl

Wszystko działa dobrze, z wyjątkiem tego, że muszę przewinąć około 80% ekranu, aby uruchomić UIRefreshControl. Czasami nie jestem w stanie go wyzwolić, ponieważ w dolnej części ekranu znajduje się pasek kart, który anuluje przewijanie, gdy palec się do niego zbliży.

Przyjrzałem się innym aplikacjom, a mianowicie "Mail" firmy Apple, w której UIRefreshControl uruchamia się po przewinięciu tylko 30% ekranu.

Czego mi brakuje? Naprawdę potrzebujesz pomocy w tej sprawie!

Dzięki z góry

Odpowiedz

1

prawdopodobnie trzeba, aby nie używać UIRefreshControl i po prostu wykorzystać scrollViewDidScroll (lub tableViewDidScroll jeśli tableview) na odświeżenie obsługiwać odpowiednio od UIRefreshControl nie mogą być modyfikowane.

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

Dziękuję za pomoc, jednak wierzę, że UIRefreshControl istnieje do użycia i "Mail" to używa. Zauważyłem, że w mojej aplikacji odległość przewijania UITableView w porównaniu do przesunięcia palcem jest o wiele krótsza niż w przypadku "Poczty", tj. Dla tej samej odległości przesunięcia palca, widok "UITableView" poczty przewija znacznie więcej niż widok UITableViews mojej aplikacji. Zastanawiam się, dlaczego ... – Joaocdn

2

Miałem podobny problem i jest całkiem możliwe, że jest to ta sama przyczyna. Dla mnie zdarza się, że ja hided wskaźnik przewijania co mi w stanie dostrzec oczywistą przyczynę problemu: UIScrollView „s wysokość jest znacznie większa niż jego superView ...

dwukrotnie sprawdzić UIScrollView” wysokość s ponieważ " przeciąganie odległości "to tylko procent tej wysokości. To samo dotyczy także UITableView, ponieważ jest to klasa podrzędna UIScrollView.

EDIT: Wydaje się, że nie jest to jedyny sposób, aby odtworzyć ten problem, ponieważ wymagana odległość przeciągnij, aby wyzwolić odświeżające obliczana jest w sposób wadliwy. Aby uzyskać więcej informacji, patrz this question.

Ale generalnie stanie się tak, jeśli twoja wysokość UIScrollView jest inna niż jego kontener macierzysty (np. Sam ekran).

+0

Obsługa 'UIScrollView' dla' UIRefreshControl' zaczyna się na iOS 10. Przed tym, miałeś poważny dryf. Patrz [SO 29791995] (http://stackoverflow.com/a/43288926/218152) – SwiftArchitect

Powiązane problemy