UIGestureRecognizer can only be applied to a UIView or a subclass of it (for example, UILabel, as Adam suggested). If you are worried about performance, I think the next step will be:
1) A subclass of UIView to create a custom implementation of a UILabel-like representation.
2) Pull the custom label string into the drawInRect method:
3) Use touchhesBegan: withEvent :, touchesMoved: withEvent :, and touchesEnded: withEvent: methods for tracking finger positions to move / redraw support line characters.
EDIT:
Alternatively, you can use one UIPanGestureRecognizer per user label to track finger positions and navigate through the sublayers within the user label (each sublayer can contain a character in a line). That way, you can more easily use Core Animation to animate characters (i.e., create a dropping effect).
source share