/ / Cómo determinar que el usuario finalizó el desplazamiento vertical de la vista de tabla en el objetivo c - objetivo-c, ios

Cómo determinar que el usuario terminó el desplazamiento vertical de la vista de tabla en el objetivo c - objetivo-c, ios

Quiero hacer algunas cosas cuando el usuario finalice el desplazamiento vertical de la vista de tabla. ¿Alguien sabe cómo determinar ese período?

Respuestas

4 para la respuesta № 1

Necesitas tu controlador de vista para convertirte en un delegado de UIScrollView: UIScrollViewDelegate

En su delegado puede implementar los siguientes métodos para ayudar a determinar el estado final:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{

}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

}

También hay dos propiedades de UIScrollView que pueden ayudar:

scrollView.isDragging
scrollView.isDecelerating

Solo tenga en cuenta que hay varias "posibilidades" finales para la vista de desplazamiento. Si no hay desaceleración, scrollViewDidEndDecelerating no se llamará, solo scrollViewDidEndDragging. Sin embargo, si hay desaceleración, ambos serán llamados. Puedes usar el decelerate var in scrollViewDidEndDragging para ayudar a determinar cuándo ejecutar su código. Por esta razón, generalmente es una buena idea tener un método separado al que llamen estos métodos de delegado.


1 para la respuesta № 2
@implementation YourViewController
{
BOOL shouldDoYourTask;
}

-(void)performYourTask{
//Do Your Stuff
shouldDoYourTask = YES;
}

#pragma mark - ScrollView Delegate
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate
{
if (!decelerate && shouldDoYourTask)
{
[self performYourTask];
shouldDoYourTask = NO;
}
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (shouldDoYourTask) {
[self performYourTask];
shouldDoYourTask = NO;
}

}