I had recently the same trouble and found the solution here: My custom UI elements….
In short: while your UIScrollView is scrolling, the NSTimer is not updated because the run loops run in a different mode (NSRunLoopCommonModes, mode used for tracking events).
The solution is adding your timer to the NSRunLoopModes just after creation:
NSTimer *elapsedTimeTimer = [NSTimer scheduledTimerWithTimeInterval:0.001
target:self
selector:@selector(updateElapsedTimeLabel)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:elapsedTimeTimer
forMode:NSRunLoopCommonModes];
(The code comes from the post linked above).