I need to see the initial press/touch all the way through to the lift/touch end. A tap gesture is only recognized when the tap is complete, so you only get the tap callback after the finger is lifted.
Even if I were to make a custom gesture recognizer, or attempt to use tap gestures, you still have to go through all the trouble of setting up the "requires failure of" gesture relationship with the scroll view, and other complications to get it to work for my purposes.
The whole thing is somewhat complicated, but in the end it just boils down to not having a touch_cancelled() method on regular ui.Views. UIControls actually have a way to connect to the various touch phases, but regular UIViews do not.
I will say that using the delegate as above works pretty flawlessly.