悬停打开需要延迟以防误触
别名: 菜单悬停延迟 · intent delay · 防路过打开
概念解释
指针路过菜单条或父项时,并不等于要打开那一项。悬停延迟(hover delay)在「指针进入」和「菜单打开 / 切换」之间加一扇时间门,用来区分路过和停留。没有这扇门,指针横穿一排菜单会沿路掀开每一扇,盖住内容、抢走视线,还可能在指针离开时立刻全关,变成一路闪烁。这与斜向通道的几何不是同一机制:延迟处理的是意图尚未确定,走廊处理的是意图已定之后怎么走过去。
机制
指针位置是连续采样的。经过一条菜单时会短暂进入每一项的命中盒,若进入即打开,系统把路过当成选择。人的意图信号其实是停留:速度下降、停在某一项上超过一个短窗口。延迟就是这个窗口。打开延迟防路过掀门;关闭延迟(或迟滞)防指针为了抄近路暂时离开时整棵被拆掉。两扇门不对称:打开稍慢一点能少掀很多次门,关闭稍慢一点能保住正在穿过走廊的那一次操作。
延迟太短,路过仍会打开;延迟太长,真正想打开的人会以为菜单坏了,改去点击。合适的窗口往往只有一两百毫秒量级,并且应对指向目标减速的运动更敏感,对匀速横穿更迟钝——这是在看速度,不只是看时钟。
怎么研究
让指针按指定轨迹横穿菜单条,再让另一组在某一项上停下,测量误开次数和有意打开的等待。自变量是打开延迟、关闭延迟、是否考虑速度。因变量是路过引起的打开、有意打开的时间、以及闪烁次数(开了又立刻关)。
把延迟调成零作为基线,路过掀门会显著上升,这才能说明延迟在防误触,而不是在修走廊几何——走廊任务应在延迟已经足够之后仍单独失败。
边界
点击打开的菜单不靠这扇门,靠的是明确激活;再加悬停会变成两套意图。触屏没有悬停。无障碍的键盘焦点移动若也套用同样延迟,方向键会觉得粘滞,键盘应立即打开或仅在焦点上显示,不要等时钟。极密集的工具栏图标路过成本更高,延迟可以略长;已经点开并在菜单内移动时,项与项之间切换应比从外部打开更短,否则在菜单里选一项也会被当成路过。
怎么落地
- 从菜单外进入时使用打开延迟;已打开的菜单内切换使用更短的延迟或立即切换。
- 关闭不要在指针一离开就发生,给穿过子菜单走廊留出关闭迟滞。
- 不要用把延迟加很长来补救几何出界;两件事分开调。
- 验证:匀速横穿整条菜单,应几乎不掀门。在目标项上停下,应在短时间内打开。再从父项斜向进子项,菜单不应因为短暂离开而关——那是关闭迟滞,不是把打开延迟加长。