UIScrollView scrollRectToVisible: animado: ¿hay alguna forma de llamar un método cuando finaliza la animation?

¿Hay alguna forma de saber cuándo la animation termina y uiscrollview se detiene?

Sí, usa scrollViewDidEndScrollingAnimation

Lo hago así porque a veces usar el delegado no es práctico para mí, como si lo hago en la transición UIViewController:

[UIView animateWithDuration:0.3 animations:^{ [scrollView setContentOffset:CGPointMake(0, -scrollView.contentInset.top) animated:NO]; } completion:^(BOOL finished) { // This is called when it's complete }]; 

Implemente los methods de delegación UIScrollViewDelegate para su UIScrollView de la siguiente manera:

Use scrollViewDidEndScrollingAnimation: para detectar cuando la animation de desplazamiento finaliza cuando ha iniciado el desplazamiento llamando a setContentOffset:animated: o scrollRectToVisible:animated: methods (with animated: YES).

Si desea controlar el movimiento de la vista de desplazamiento que se inició con los gestos táctiles, utilice el método scrollViewDidEndDecelerating: método que se scrollViewDidEndDecelerating: cuando el movimiento de desplazamiento se detiene.

scrollViewDidEndDecelerating: método delegado de UIScrollView se invoca cuando scrollView se detiene por completo.