Вы также можете использовать CoreAnimation и напрямую анимировать свойство bounds. Сначала анимируйте прокрутку, затем в обратном вызове делегата, который завершил анимацию, вы сбрасываете смещение содержимого.
Метод обратного вызова должен иметь подпись
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
Вы также можете использовать новые блочные методы, если вы ориентируетесь на iOS 4.0 и выше. Затем необходимо передать два блока: в первом вы указываете, что нужно анимировать, а во втором - что делать, когда анимация заканчивается.
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
Ваша проблема, чем сваливается в одну строку кода:
[stationInfo animateWithDuration:10.f delay:0.f options:0 animations:^{
[stationInfo setContentOffset:CGPointMake(0, [stationInfo contentSize].height)];
} completion:^(BOOL finished){
if (finished) [stationInfo setContentOffset:CGPointMake(0,0)];
}];
Если честно, я не на 100% уверен в точном синтаксисе блока, но именно так он и должен работать.