2012-10-03 11 views
14

Mam UIRefreshControl na górze mojego stołu.UIRefreshControl w krajobrazie

Ekran jest w orientacji poziomej.

Kłopot polega na tym, że nie mogę odciągnąć na tyle daleko, aby wywołać odświeżenie, ponieważ w Krajobrazie jest za mało miejsca. Czy istnieje sposób na skorygowanie kwoty, którą trzeba obniżyć?

+0

bardzo zainteresowany w odkryciu przyczyn tego problemu. Nie można odtworzyć w Xcode 4.5 na OS X 10.8.2 – Zelko

+4

moja aplikacja ma pasek nawigacyjny, a także UISearchBar na górze tabeli, więc jest mniej miejsca na przeciąganie – cannyboy

+0

Jeśli masz tylko pasek nawigacji i wyszukiwanie bar wtedy wystarczająco uczciwy, brzmi jak to powinno działać zgodnie z oczekiwaniami. Aplikacja Mail ma pasek wyszukiwania i pasek nawigacji, działa dobrze, co jeszcze masz na ekranie? – Daniel

Odpowiedz

10

Sposób, w jaki można ustawić, jak daleko należy pociągnąć, polega na zmianie wysokości UITableView. UIRefreshControl dostosowuje swoją maksymalną wysokość zniekształcenia proporcjonalnie do wysokości tableView. Jeśli nie możesz zmienić wysokości tableView, proszę file a bug ze szczegółami twojej sytuacji i miejmy nadzieję, że zostanie to rozwiązane w przyszłym wydaniu na iOS.

Czy próbowałeś też szybciej wyciągać?

+3

Dostosowywanie wysokości widoku tabeli wydaje się nie mieć żadnego efektu. – cannyboy

+0

@cannyboy to bardzo interesujące. Proszę zgłosić błąd ze szczegółami. Dzięki! :) –

+0

yep tableview height nie zmienia "maksymalnej wysokości dystorsji proporcjonalnie do wysokości tableView", zgłosiłem błąd – ugiflezet

10

Pamiętaj, że Twoja tabela to tylko podklasa UIScrollView. W swoim kontrolerze zastosuj metodę scrollViewDidScroll i zadzwoń pod numer -beginRefreshing na swój UIRefreshControl, jak poniżej.

Ale animacja UIRefreshControl podczas przechodzenia w stan odświeżania nie będzie tak gładka, jak można się spodziewać. Ale działa.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y < -98 && ![self.refresher isRefreshing]) { 
     [self.refresher beginRefreshing]; 
     //do all the work 
     [self.refresher endRefreshing]; 
    } 
} 
+0

Dobre rozwiązanie na razie. –

+2

Pamiętaj, że lepiej umieścić go wewnątrz ScrollViewDidEndDragging: –

0

jeśli contentsize ma wysokość nie wystarczy pociągnąć w dół, może być konieczne, aby umożliwić jego pionowej za pomocą self.collectionView.alwaysBounceVertical = YES;

Powiązane problemy