C3.12.3System gestures truncate same-shape app gestures设计研究

系统手势的存在会截断应用内的同形手势

别名: 手势截断 · gesture preemption · 轨迹被吃

概念解释

应用即使用的不是“官方保留”的那条命令,只要动作形状像——三指平移画布、四指捏合选中——系统识别器仍可能在轨迹中途判定为壳层手势,把后半段截走。应用看到的是一条突然结束的触点,不是一次完整的画布操纵。截断发生在形状相似,而不只发生在你故意去抢保留命令时。

机制

系统识别器看指数、方向、间距变化率,不看你的业务意图。三指在画布上慢慢平移,指数和方向已经满足“三指滑去切应用”的前缀,于是在位移还没走完时 capture。应用若已经让图层跟着走了几十像素,cancel 到来时必须回滚,否则留下错位。捏合类同形更危险:四指略一靠拢像回主屏,画布上的多指缩放还没写完倍数就被送回桌面。截断点取决于系统的置信度阈值,应用无法精确预测,只能按“随时可能断”来写状态机。

怎么研究

在画布上做三指平移和四指轻微捏合,系统手势保持默认开启。记录轨迹长度、cancel 发生时的位移、回滚是否干净、用户是否以为自己完成了应用命令。把指数降到双指作对照:同形但指数不触发壳层时,轨迹应完整。版本之间对比截断点,可以看出系统阈值是否在收紧。

边界

系统提供“边缘除外、内容区允许应用多指”的 API 时,截断可以按区域让步,但边缘仍会被拿走。把三指改成两指加修饰键(硬件键盘)可绕开形状冲突。纯鼠标会话没有这些系统触控手势,截断不出现,桌面测试会假阴性。

怎么落地

  • 画布操纵默认用一指或两指;非要用三指,须处理中途 cancel:回滚半成品,不要提交残缺变换。
  • 在可能被截断的手势进行中不要做不可逆写入。
  • 打开系统手势,三指在画布上慢慢拖一条长线。线若画到一半人已经在多任务里,这就是截断。检查应用是否把那半条线当成了完成的对象,还是已经撤销。

延伸

  • 同组C3.12.1 系统级多指手势优先于应用手势 · C3.12.2 应用不应占用系统保留的多指手势
  • 相邻C3.10 双指旋转 · C3.08 双指捏合缩小
  • 站内检索touch cancellation · gesture truncation · simultaneous recognizers

同组卡片

快捷操作

分享

分享当前页面

ios_share

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