Detangling Gesture Recognizers
summary
OmniGraffle's gesture bugs are fixed by replacing tangled delegate logic with an explicit state machine that enables and disables recognizers via the isEnabled flag, removing brittle requireToFail webs. 18 documented gesture-driven actions become a sparse transition matrix; standard UIGestureRecognizer subclasses remain but are simplified (tap counter, rotation that continues with one finger). Debugging uses console, sound-breakpoints and on-screen visualizers; the rewrite takes about two months and yields a far less fragile, testable system.
AI-written summary · about
chapters (23)
- 0:00Introduction
- 1:02Story
- 2:56Documentation
- 3:42Demo
- 4:51Bug Overview
- 5:14Favorite Debugging Techniques
- 11:59Long Press Gesture
- 15:40Composite Gesture
- 16:01Delegate Protocol
- 17:24Too Many Gestures
- 18:58State Machines
- 21:15State Transition Matrix
- 23:06Should Recognize
- 23:55Custom Gesture Recognizers
- 25:18Benefits
- 26:07Questions
- 27:47Collaborative process
- 28:32How long did it take
- 29:03Visualizing code
- 30:01Dealing with builtin scroll views
- 31:41Easy to follow code
- 32:26Visualisation resistance
- 33:38Gesture alternatives
related talks
24mFrom Touch To Code: Gestures and Beyond
18mM.Gesture: An Acceleration-Based Gesture Authoring System on Multiple Handheld and Wearable Devices
17mUser-Driven Design Principles for Gesture Representations
19mDesigning Multi-Touch Gestures Using the Space around the Smartwatch as Continuous Input Space
20mIntroducing Transient Gestures to Improve Pan and Zoom on Touch Surfaces
19mDetecting Swipe Errors on Touchscreens using Grip Modulation
17mCharacterizing How Interface Complexity Affects Children's Touchscreen Interactions
20mExpressive Keyboards: Enriching Gesture-Typing on Mobile Devices
