How to know when a UIScrollView (includes UITableView, UICollectionView) finished scrolling

UIScrollViewDelegate has the method: -[UIScrollViewDelegate scrollViewDidEndDragging:willDecelerate:], and the decelerate parameter is NO when the scroll view has finished scrolling.

So you could use it like this:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate){
        NSLog(@"The scroll view isn't scrolling anymore.");
        // perform some animation
    }
}