It seems that user interaction like scrolling a list means that NSTimer events do not get delivered in a AVAnimatorMedia class. Switching from NSDefaultRunLoopMode to NSRunLoopCommonModes is indicated as a fix: https://stackoverflow.com/questions/7222449/nsdefaultrunloopmode-vs-nsrunloopcommonmodes