Long-press lives in hundreds of milliseconds, shorter than the double-tap gap
Aliases: long-press timeout · double-tap interval · nested timeouts
What it is
The default long-press clock sits around 400–600 ms and should be shorter than the double-tap window that waits for a second down on the same hotspot. Holding is continuous contact; double-tap is lift then down. If long-press is only allowed after the double-tap window expires, an intentional hold is first treated as “the second tap is still coming,” and the menu looks broken. The two timeouts must be staggered; this leaf is the direction of that stagger, not the long-press primitive itself.
Why it happens
After down, a recognizer that queues “has not lifted” with “might lift and tap again” lets the double-tap window block long-press. That window is often 300–500 ms; putting long-press later forces a holder to wait out someone else’s second tap. The clean split is: while contact has not lifted, do not reserve a seat for double-tap—double-tap’s gap clock starts after the first lift. Long-press fires on unlifted contact with its own hundreds-of-ms clock, and that clock stays shorter than the double-tap gap so a slow first tap of a double-tap and a short long-press do not share one interval. Hundreds of milliseconds is the band that is still a classification delay rather than an explicit waiting task, and still longer than a sluggish tap.
Studying it
On a hotspot that hosts tap, double-tap, and long-press, sweep the two timeouts against each other. Mix all three intents. Record holds classified as unfinished double-taps, first taps promoted to long-press, and extra delay on single taps. Draw the two-dimensional conflict band; do not report one “best millisecond.” Measure participants’ actual tap rhythm.
Where it stops holding
Ordinary buttons that do not double-tap need not honour a double-tap window; long-press can fire earlier. After assistive tech rewrites double-tap as activation, the app may never see either clock. Stylus double-tap gaps are usually tighter and need retuning. Staggering clocks fixes classification fights, not “how long until waiting is annoying.”
Applying it
- Time long-press only on unlifted contact; do not
requiredouble-tap to fail first. Keep the value in the hundreds of milliseconds and shorter than that view’s double-tap gap. - Disable the double-tap recognizer on controls that do not need it.
- Script lifts or second downs at 200/400/600 ms and check that a hold can show a menu before the double-tap window dies, without a short tap getting the menu first.
Related
- Same group: C3.25.2 Thresholds may follow settings or recent speed, not a global constant · C3.25.3 Every long-press function needs a non-long-press path · C3.25.4 Shared onset with drag makes the threshold a classification boundary
- Adjacent: C3.03 Long press · C3.02 Double tap
- Search:
long-press timeout·double-tap interval·nested timeouts