C3.02.2Double-tap timeout delaying single tap设计研究

双击与单击并存会延迟单击响应

别名: 双击等待 · click delay · 300ms delay

概念解释

同一目标既响应单击又响应双击时,识别器无法在第一次抬起时下结论:也许马上还有第二次。它必须把单击动作挂起,直到双击间隔窗口走完。这段等待就是触屏上著名的单击延迟(double-tap timeout / click delay)。代价由每一次普通点按支付,不是只由真正的双击支付。

机制

第一次抬起进入 pending tap 状态。若窗口内在容差距离里出现第二次按下,pending 被升级为双击,单击回调永不触发。若窗口空窗,才补发单击。窗口短了,慢的双击会被拆成两次单击;窗口长了,所有单击都变“黏”。早期移动浏览器为了兼容桌面的 dblclick,曾在链接上默认等待约 300 毫秒,页面跳转因此普遍发肉。消除延迟的办法不是把双击练得更快,而是让单击目标与双击目标在空间或控件类型上错开,使识别器不必对同一命中区做二选一。

怎么研究

给同一按钮接上单击与双击回调,系统改变间隔窗口,记录第一次抬起到单击回调的时间、双击识别率、以及“点了没反应又点一次”的补点。自变量还包括两次落点允许的距离、目标是否位于可滚动容器。把延迟测在实验室孤立控件上会低估列表里的体感:列表滚动一旦被第一次按下启动,窗口策略还会和滚动抢触点。对照条件应包含“该目标根本不注册双击”,这才是零延迟基线。

边界

双击若注册在整张图片或地图表面、单击注册在覆盖其上的按钮,两个命中区不同,按钮不必等待。系统辅助功能里的“点按时需确认”或慢速点击,会把间隔窗口拉到秒级,普通超时数据不能用。把单击动作做成按下即预览、抬起再决定,并不能取消双击窗口——只要双击仍可能发生,最终跳转仍得等。语音或外接键盘激活没有第二次敲击,不应再套同一套超时。

怎么落地

  • 需要即时响应的控件(链接、提交、播放/暂停)不要再注册双击;把双击放到周围的可缩放表面。
  • 同一对象必须两者都要时,单击只做可逆预览(高亮、选中),把不可逆跳转留给窗口结束之后,或干脆改用长按、按钮承担第二条语义。
  • 用示波器或日志对齐:第一次抬起、单击回调、第二次按下。凡单击回调晚于抬起超过双击窗口,就说明这个目标还在为双击付税。

延伸

  • 同组C3.02.1 双击在触屏上主要承担缩放与快捷放大 · C3.02.3 双击的可发现性极低,不能承载唯一路径
  • 相邻C3.01 点按 · C3.19 手势冲突与消歧
  • 站内检索click delay · double-tap timeout · pending tap

同组卡片

快捷操作

分享

分享当前页面

ios_share

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