2012-10-03 14 views
14

Ho un UIRefreshControl nella parte superiore del mio tavolo.UIRefreshControl in Landscape

Lo schermo è in orizzontale.

Il problema è che non riesco a tirare giù abbastanza per attivare l'aggiornamento, perché c'è troppo poco spazio in Paesaggio. C'è un modo per regolare l'importo che devi tirare?

+0

molto interessato a scoprire la causa principale di questo problema. Impossibile riprodurre in Xcode 4.5 su OS X 10.8.2 – Zelko

+4

la mia app ha una barra di navigazione, così come una UISearchBar nella parte superiore della tabella, quindi c'è meno spazio per tirare – cannyboy

+0

Se hai solo una barra di navigazione e una ricerca bar poi abbastanza giusto, sembra che questo dovrebbe funzionare come previsto. L'app Mail ha barra di ricerca e barra di navigazione, funziona bene, cos'altro hai nel tuo schermo? – Daniel

risposta

10

Il modo in cui è possibile regolare la distanza da percorrere è modificare l'altezza dello UITableView. UIRefreshControl regola l'altezza massima della distorsione proporzionalmente all'altezza del tavoloView. Se non è possibile modificare l'altezza di tableView, quindi per favore file a bug con i dettagli della tua situazione e si spera che sarà affrontato in una futura versione di iOS.

Inoltre, hai provato a tirare giù più velocemente?

+3

Regolazione dell'altezza di un tableview sembra non avere alcun effetto. – cannyboy

+0

@cannyboy è molto interessante. Si prega di file un bug con i dettagli. Grazie! :) –

+0

yep tableview height non cambia la "altezza massima della distorsione proporzionalmente all'altezza del tavoloView", ho archiviato un bug – ugiflezet

10

Ricorda che il tuo tableview è solo una sottoclasse di UIScrollView. Nel controller, implementare il metodo scrollViewDidScroll e chiamare -beginRefreshing sul proprio UIRefreshControl come di seguito.

Ma l'animazione di UIRefreshControl mentre si sta passando a uno stato di aggiornamento non sarà facile come ci si aspetterebbe. Ma funziona.

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

Una buona soluzione per ora. –

+2

Ricordati che è meglio metterlo dentro ScrollViewDidEndDragging: –

0

se il contentsize ha l'altezza non è sufficiente per tirare verso il basso, potrebbe essere necessario per attivare la propria verticale usando self.collectionView.alwaysBounceVertical = YES;

Problemi correlati