2011-07-28 5 views
9

estoy usando el siguiente código para detectar si he llegado al fondo de un UITableViewdetectar si UITableView ha desplazado hasta la parte inferior

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if(self.tableView.contentOffset.y >= (self.tableView.contentSize.height - self.tableView.bounds.size.height)) { 
     NSLog(@"bottom!"); 
     NSLog(@"%@", [self getLastMessageID]); 
     [self getMoreStuff:[self getLastMessageID]]; 
    } 

} 

Esto funciona bien, pero el único problema es cuando el usuario está tirando de la tabla de abajo (como pull para refrescar) el código se dispara. ¿Cómo puedo manejar esto?

Respuesta

19

tratan de esta manera

if(self.tableview.contentOffset.y<0){ 
       //it means table view is pulled down like refresh 
       return; 
      } 
else if(self.tableView.contentOffset.y >= (self.tableView.contentSize.height - self.tableView.bounds.size.height)) { 
     NSLog(@"bottom!"); 
     NSLog(@"%@", [self getLastMessageID]); 
     [self getMoreStuff:[self getLastMessageID]]; 
    } 
+0

No olvides la barra de pestañas :( – Dmytro

0

Almacena la última posición de la vista de desplazamiento en su método didScroll. Si detecta un desplazamiento hacia abajo y la última posición ya estaba en la parte inferior de la vista de desplazamiento, entonces la ignora.

0

Intenta usar otro algoritmo para detectar, que llegaste a la parte inferior de la vista de tabla. Por ejemplo, fíjate en cellPorRowAtIndexPath: (NSIndexPath *) indexPath en el indexPath de una celda actual y si el número de filas en IndexPath es igual al número de filas en tu matriz de datos, entonces llegaste a la parte inferior.

+0

me puede un ejemplo en el código de mostrar? –

Cuestiones relacionadas