C1.22.5Directional gesture threshold设计研究

方向性阈值可以在开始阶段区分横向拖动与纵向滚动意图

别名: 方向阈值 · 横向拖动 · 纵向滚动

概念解释

方向性阈值在手势开始时比较横向与纵向位移,决定把后续动作解释为横向拖动还是纵向滚动。它常用于可横滑的卡片嵌在可纵滚页面的情境,以免一个斜向的初始移动同时触发对象位移和页面滚动。

机制

系统累计初始位移,等待总距离足够后比较两轴分量或与方向扇区的夹角;占优轴取得手势所有权,另一行为被抑制或延后。它用早期轨迹作为意图证据,但接近对角线时证据天然模糊,锁定过早会产生错误归属。轴的归属一旦判定,通常还需要一段滞后容忍才能反悔:如果没有这段滞后,手指路径稍微在两个方向间摆动,就会导致归属在横向和纵向之间来回切换,用户会感觉到滚动一顿一顿地被打断,这比单纯判定错一次方向还要影响体验——错一次是单次误判,反复切换则是持续的手感断裂。

怎么研究

在不同角度、速度、内容密度和手势起点下测试,记录滚动被拦截、横拖失败、切换次数和完成时间。专门分析接近 45 度的试次,比较固定比率、动态容忍区与允许早期重新判别的策略。滞后容忍本身也需要单独测量:让被试沿着刻意贴近对角线的路径反复移动,统计轴归属实际切换的次数,判断当前的滞后余量是否足够抑制这种来回跳变。

边界

方向锁不适用于真正需要二维自由绘制或地图平移的操作。过强锁定会让自然斜拖显得卡顿,过弱又会恢复竞争手势。明确的拖动把手、模式或多指手势有时比猜测方向更可靠。触屏系统往往还在边缘保留了自己的手势区域用于系统级导航,应用层的方向判定不能覆盖到这个区域,否则会和系统手势产生更高优先级的冲突,这不是方向锁算法能自行解决的问题,而是需要在设计阶段就把可交互区域整体让出这一圈边缘。

怎么落地

  • 在开始阶段保留短暂未决区,收集足够位移后再锁定方向,并在锁定后加入适度的滞后容忍,避免轴归属在摆动路径上反复切换。
  • 依据内容结构设定倾向:纵向阅读页优先滚动,明确卡片把手优先横拖。
  • 验证办法:记录真实使用中轴锁定发生时的角度分布,单独统计落在接近对角线区间(例如与两轴各成约 35 到 55 度)的样本,看这部分样本的误判率是否显著高于其余样本。

延伸

  • 同组C1.22.1 阈值过小会让手部自然抖动被误判为拖动意图 · C1.22.2 阈值过大会让真实的短距拖动被当作点击丢弃 · C1.22.3 阈值应随输入设备精度与显示密度缩放,不能用固定像素值 · C1.22.4 按住不放但未超过阈值时,光标不应表现出任何拖动反馈
  • 相邻C1.23 双指滚动与横向滚动 · C1.20 悬停延迟与误触发
  • 站内检索directional lock · gesture disambiguation · scroll

同组卡片

快捷操作

分享

分享当前页面

ios_share

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