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 № 1Necesitas 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;
}
}