Wouldn't the touchesBegan:withEvent always fire "before" or "after" each iteration of the CADisplayLink callback?
Edit: Here's my CADisplayLink instantiation:
CADisplayLink *aDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)]; [aDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];