Не будет ли touchesBegan: withEvent всегда запускать «до» или «после» каждой итерации обратного вызова CADisplayLink?
Редактировать: Вот мой экземпляр CADisplayLink:
CADisplayLink *aDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[aDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];