C3.01.2Tap slop and timeout thresholds设计研究

位移阈值与时长阈值共同界定点按

别名: 点按容差 · 触摸抖动阈值 · touch slop

概念解释

一次接触会不会被认成点按,取决于两道闸:位移阈值(touch slop / movement slop)和时长阈值。前者规定触点可以走出多远仍算“没动”,后者规定接触可以持续多久仍算“短”。两道闸必须同时通过;只看距离会把长按误收成点按,只看时间会把轻微滑动误收成点按。

机制

手指落下时不可能绝对静止:接触面积在形变、手臂有生理震颤、采样点会在几个像素里跳。系统因此划出一块以落点为中心的容差圆,圆内的 move 事件仍挂在候选点按上。与此同时用计时器盯住接触时长;超时则改走长按或其他按住语义。一旦触点穿出容差圆,候选点按立即作废,后续事件交给拖动或滚动识别器。两道闸的交会处才是点按:短、且几乎没走。阈值写在像素或毫米里,所以同一数值在不同 DPI 和握持下并不等价。

怎么研究

把接触轨迹画在落点周围,标出系统判定发生跳变的半径与时刻。自变量为 slop 半径、长按时限、目标宽度、滚动容器是否存在;因变量为点按命中率、本意滚动却触发了点击的比例、本意点击却被吃成拖动的比例。需要分别在拇指单手和食指双手下采集,因为拇指的弧线更容易提前穿出容差。只调一个阈值会掩盖联合误差:放宽 slop 会吞掉短拖动,收紧时限会把犹豫的点按赶进长按。

边界

系统辅助触控、Parkinson 或其他动作噪声会让“几个像素的生理抖动”变成持续漂移,固定 slop 会把正当点按全部判丢。触控笔或鼠标仿真的触点抖动更小,过宽的 slop 反而会把有意的短拖当成点按。嵌在可滚动列表里的按钮,其有效 slop 往往被父级滚动识别器抢先消费,应用层看到的已经不是原始阈值。折叠屏跨铰链处的坐标突变也会让一次静止接触看起来“走了很远”。

怎么落地

  • 用物理毫米而不是生像素设定 slop,并按设备密度换算;同时把点按时限设在长按阈值之下,中间留出间隙而不是两值贴死。
  • 可滚动区域里的可点对象,要在滚动识别器拿到触点之前保留一小段“仍可能是点按”的窗口,避免手指刚动列表就抢走。
  • 用三组故意动作验收:对准点击、对准后停住等长按、对准后立刻轻拖。统计三类动作被判成另外两类的次数,改阈值直到假点按和丢点按都降到可接受。

延伸

  • 同组C3.01.1 点按是按下与抬起在同一位置的短接触 · C3.01.3 点按需要即时的按压态反馈
  • 相邻C3.03 长按 · C3.04 拖拽
  • 站内检索touch slop · tap timeout · gesture disambiguation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C3.01.2