C6.10.2Autocomplete candidate jumping设计研究

候选跳变导致误选

别名: 候选跳动 · 补全误触 · suggestion jumping

概念解释

补全列表会随着前缀每多一个字母而重算。条目的文字、顺序和宽度都会变,原来占据某一位置的候选会换到旁边或消失。手指已经朝那个位置按下时,抬起命中的是新来的另一条——这就是候选跳变造成的误选。错误出在列表在瞄准过程中改了地图,不在用户点错键。

机制

从看见目标到触起,有一段瞄准时间。这段时间里下一次击键可能已经到达,前缀变了,列表重排。触屏尤其敏感:接触面积大,目标一旦横向挪动几个毫米,质心就落到邻居上。条目宽度随词长变化,短词让出的空间会被长词立刻占住,位置通道比文字通道更不稳定。搜索建议在输入很忙时每秒重排多次,键盘条则常与下一次字母同步刷新。跳变的结果是写入一个用户并未读过的字符串,而且看起来像一次成功的补全,难以被察觉。冻结列表直到当前接触结束,或在接触期间忽略刷新,才能把地图在瞄准窗口内钉住。

怎么研究

在补全条上记录按下与抬起时的条目身份是否同一,以及不同身份时写入了哪一条。自变量包括刷新是否与击键同步、条目是否在接触期间冻结、条目宽度是否随文字伸缩;因变量包括跳变误选率、察觉后的删除率。用鼠标慢点的桌面测试会严重低估触屏上的跳变。

边界

候选很少、第一条长期稳定时,跳变几乎不发生。实体键盘用 Tab 取第一条,不依赖屏幕位置,跳变影响的是“第一条是谁”,不是“点到了邻居”。输入很慢、两次击键之间列表已经看清再动手,瞄准窗口里没有刷新。IME 候选窗的重排是另一套列表,不在补全条这条里。

怎么落地

  • 手指或指针已经落在候选条上时,冻结该条的条目身份直到抬起;刷新等到这次接触结束。
  • 给条目固定槽宽,避免词长变化把邻居挤过来。
  • 日志里把“按下目标 ≠ 抬起目标”标成跳变误选;高发时先停接触中刷新,而不是先改排序模型。

延伸

  • 同组C6.10.1 补全候选的位置与选择成本 · C6.10.3 补全不得改变已确认的输入
  • 相邻C6.12 输入法候选 · C6.26 输入法候选与排序
  • 站内检索candidate jumping · suggestion stability · touchdown identity

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C6.10.2