Tuve el mismo problema, y obtuve algunas ideas de las respuestas anteriores para solucionarlo, pero no solo la aplicación falla si deseo actualizar mientras se está desplazando la vista de tabla, sino también cr cenizas si me desplazo mientras se actualiza. Por lo tanto, la solución extendida para solucionar el problema bajo todas las circunstancias es:
1.1. Deshabilitar el desplazamiento si el usuario ha presionado el botón Actualizar
1.2. Habilite el desplazamiento una vez que el proceso de actualización haya finalizado
2.1. Deshabilite el botón Actualizar si el usuario está desplazándose
2.2. Habilitar el botón de actualización una vez que el usuario ha terminado desplaza
Para implementar la primera parte (1.1, y 1.2..):
-(void)startReloading:(id)sender
{
...
self.tableView.userInteractionEnabled = NO;
// and the rest of the method implementation
}
-(void)stopReloading:(id)sender
{
self.tableView.userInteractionEnabled = YES;
// and the rest of the method implementation
}
para implementar la segunda parte (2.1, y 2.2..):
- (void)scrollViewWillBeginDragging:(UIScrollView *)activeScrollView
{
barButton.enabled = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
barButton.enabled = YES;
}
Y como se explica en la respuesta anterior UISCrollViewDelegate
, se debe establecer en el archivo .h
:
@interface MyTableViewController : UITableViewController <UIScrollViewDelegate>
P.S. Puede usar scrollEnabled
en lugar de userInteractionEnabled
, pero todo depende de lo que esté haciendo, pero la interacción del usuario es la opción preferida.
Gracias, lo tengo. tneed jus para añadir a MyTableViewController @interface: UIViewController y luego implementar -scrollViewWillBeginDragging: Gracias. –
Rod
¿Cómo se puede obtener el desplazamiento desde una tabla específica? Digamos por ejemplo que tengo 2 UITableViews? –
@jeraldo, todos los métodos UIScrollViewDelegate aceptan la vista de desplazamiento que lo llama como parámetro, por lo que puede determinar fácilmente con qué UIScrollView está tratando – Vladimir