Вы можете сделать трюк прокруткой пиксель за пикселем с анимированным NO, так как он не останавливается как свойство анимированного YES после завершения прокрутки. Единственное, что вам нужно установить - это speedFactor как время вызова вашего NSTimer, а не прокрутки. И после того, как прокрутка сделана с contentSize, аннулируйте таймер, и прокрутка должна остановиться.
- (void) autoscrollTimerFired:(NSTimer *)timer {
[self.completeText setContentOffset:CGPointMake(0, self.completeText.contentOffset.y + 1.0) animated:NO];
if (self.completeText.contentOffset.y != self.completeText.contentSize.height - self.completeText.frame.size.height) {
scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:velocityFactor target:self selector:@selector(autoscrollTimerFired:) userInfo:nil repeats:NO];
} else {
[scrollingTimer invalidate];
}
}