The reason the timer stops firing is because the run cycle is switched to UITrackingRunLoopModeduring scrolling, and by default this timer is not added to this mode. You can do this manually when starting the timer:
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
NSRunLoop *runloop = [NSRunLoop currentRunLoop];
[runloop addTimer:timer forMode:NSRunLoopCommonModes];
[runloop addTimer:timer forMode:UITrackingRunLoopMode];
source
share