I am sure that touchsBegan is called very quickly (this means that any minimum delay exists in the event path). I noticed in my code that I have one touchhesBegan for two fingers with two touches already on the list. I guess I don't touch both fingers very precisely, but from what I saw, the touchBegan events were delivered within a few milliseconds. I suspect that Apple touches them very briefly before transferring them to unload them for more efficient management, possibly also using this delay to filter out accidental touches (sort of like dropping a mechanical switch).
I use touchhesBegan, in my opinion, to freeze my scroll animations, and my perception is that the scroll stops immediately when I touch the screen.
Real delays come from gesture recognizers. They often have to wait if you have moved far enough to indicate a pan, or if you have spent long enough to hold on, or if you released without dragging to indicate taps. Of course, these delays can be significant, although in my experience they still remain only for a split second.
source share