C1.08.2Drag initiation threshold设计研究

拖动起始阈值防止点击被误判为拖动

别名: drag threshold · 拖动阈值 · touch slop

概念解释

拖动起始阈值(drag initiation threshold)指按下之后,指针或手指必须移动超过一定距离、达到一定速度,或者持续停留一定时间,才会被系统判定为进入拖动状态。它的作用是把点击过程中身体自然产生的微小抖动和真正有意的拖动区分开来,防止一次单纯的选中动作被误判成"用户想移动这个对象"。触屏系统通常把这段允许范围叫作 touch slop(触摸容差)。

机制

按压的一瞬间,手指或鼠标本身都会有轻微的、非意图的位移——手不是机械臂,按下去的力量总会带来一点点晃动,触摸传感器的采样噪声也会叠加进来。系统在这段容差范围以内,仍然把当前动作当成"点击候选"保留着;一旦移动超过阈值,就锁定为拖动,不再回退成点击。阈值定得越小,系统对真实拖动意图的响应就越快,但误判成拖动的概率也越高;阈值定得越大,误判更少,可代价是真正想拖动的用户会觉得系统迟钝、要多移动一段距离才有反应——这是二选一的权衡,不存在同时最优的固定值。

怎么研究

系统操控阈值大小、被操作对象的尺寸、设备类型(鼠标、触控板、手指触屏、触控笔)和用户的持握姿势,记录误拖率、从按下到真正进入拖动状态所需的时间、点击本身的成功率、拖动被取消的次数和重试次数。测试设计里必须同时包含静止不动的选中动作和短距离拖动这两类样本——如果只测试长距离拖动,会完全暴露不出阈值定得过高这个问题,因为长距离拖动无论阈值多大都能顺利越过。

边界

带压感的画笔和数位笔输入可以直接依据笔尖压力或悬停、接触状态来识别拖动意图,不一定需要套用和手指触摸相同的距离阈值——它们有额外的信号维度可用。运动控制障碍或手部震颤的用户,其无意识的微动幅度本身就比一般用户大得多:固定的小阈值会持续把他们正常的点击误判成拖动,而调大阈值到能覆盖这类用户的程度,又会让需要精细、短距离重新排列的操作(比如在密集列表里挪动一两个像素)变得迟钝甚至难以完成,两种需求在同一个固定数值上很难兼顾。

怎么落地

  • 对同一个对象既支持点击又支持拖动的场景,采用一个稳定、可根据平台或辅助设置调整的起始阈值,而不是写死一个经验数字。
  • 一旦越过阈值进入拖动状态,立刻给出对象已经被拾起的明确反馈,让用户能第一时间察觉"这次是被判成拖动了",如果不是本意就能马上取消。
  • 分别测试微小幅度的点击动作和短距离拖动这两类场景,统计误拖次数和"拖动真正开始前多移动了多少距离",用这两个指标而不是单一成功率去调整阈值。

延伸

  • 同组C1.08.1 拖放的三阶段:拾起、移动、放下 · C1.08.3 可放置目标必须在拖动中显式表达 · C1.08.4 拖到边缘时的自动滚动 · C1.08.5 拖放过程可取消且能回到原位 · C1.08.6 拖放必须有非拖放的等效路径
  • 相邻C1.07 单击与双击 · C1.05 光标热点与命中判定
  • 站内检索drag threshold · touch slop · gesture disambiguation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C1.08.2