2013-05-03 14 views
7

Ho problemi nell'implementare un UIRefreshControl su un UITableView.UITableView trascinamento della distanza con UIRefreshControl

Tutto sta funzionando bene tranne il fatto che devo scorrere qualcosa come 80% dello schermo per UIRefreshControl per essere attivato. A volte non sono nemmeno in grado di attivarlo poiché c'è una barra delle schede nella parte inferiore dello schermo, che annulla il movimento di scorrimento quando il dito lo raggiunge.

Ho esaminato altre app, in particolare "Posta" di Apple, in cui UIRefreshControl viene attivato dopo aver fatto scorrere solo il 30% dello schermo.

Cosa mi manca? Ho davvero bisogno di aiuto su questo!

Grazie in anticipo

risposta

1

probabilmente non è necessario utilizzare per UIRefreshControl e solo utilizzare scrollViewDidScroll (o tableViewDidScroll se un tableView) sul gestire il vostro aggiornamento di conseguenza dal momento UIRefreshControl non può essere modificato.

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

Grazie per l'aiuto, tuttavia credo che UIRefreshControl esista per essere utilizzato e "Mail" lo utilizza. Mi sono reso conto che nella mia app la distanza di scorrimento di UITableView rispetto a quella del dito è molto più breve di quella di "Mail", cioè, per la stessa distanza del dito, la UITableView "Mail" scorre molto più delle UITableViews della mia App. Mi chiedo perché ... – Joaocdn

2

Ho avuto un problema simile ed è del tutto possibile che è la stessa causa per voi. Per me capita che mi nascose l'indicatore di scorrimento facendomi in grado di vedere la causa evidente del problema: il UIScrollView 'altezza di s è molto più grande rispetto al suo superView ...

doppio controllare i UIScrollView' altezza s perché il " trascinando la distanza "è solo una percentuale di quell'altezza. Lo stesso vale per lo UITableView, poiché si tratta di una classe figlio di UIScrollView.

EDIT: sembra che questo non è l'unico modo per riprodurre il problema, dal momento che la distanza di trascinamento necessaria per attivare l'aggiornamento viene calcolato in modo buggy. Fare riferimento a this question per ulteriori informazioni.

In generale, tuttavia, accadrà se l'altezza del tuo UIScrollView è diversa dal suo contenitore padre (ad esempio lo schermo stesso).

+0

Il supporto di 'UIScrollView' per' UIRefreshControl' inizia da iOS 10. Prima di questo, hai avuto una forte deriva. Vedi [SO 29791995] (http://stackoverflow.com/a/43288926/218152) – SwiftArchitect

Problemi correlati