系统手势优先级高于应用
别名: 手势争用 · gesture arbitration · 系统手势优先 · cancelled touch
概念解释
同一段滑动,系统和应用都想认领时,系统手势优先(system gesture precedence):主屏、多任务、返回、控制中心必须能在任何应用之上被唤出。应用侧的识别器会收到取消,或根本拿不到完整轨迹。这是争用时的裁决规则,不是「边缘这块地归谁」的几何描述,也不是全面屏把占用区加厚的那段历史。画布上的一笔、轮播的下一张、自定义返回,只要和系统手势同形,输掉的是应用。这条只谈优先级,不谈边缘热区怎么截断轨迹,也不谈去掉 Home 键之后占用带宽了多少。
机制
操作系统必须保证人能离开当前应用,否则一次全屏占用就能把设备锁死。因此系统识别器挂在应用之前或具有更高优先级:轨迹一旦匹配系统姿态,应用手势被取消。取消对用户是「我明明在拖这个对象,它却飞走了 / 我回到了主屏」。应用无法用更灵敏的识别器赢过系统,因为那会破坏逃离通道。有的系统提供短暂的延迟或排除矩形,让全屏游戏少误触,那是系统把优先级借出一截,不是应用反过来压过系统。争用的本质是同一输入流不能同时属于两套语义;裁决偏向系统,是因为失败代价不对称——应用手势失败是功能不好用,系统手势失败是人被困在应用里。
怎么研究
记录手势识别器的胜负:同一轨迹上,系统动作是否完成、应用是否收到取消。用意图访谈对照:人说「我想翻下一张」,实际发生的是回到上一页。
自变量:同时注册的识别器种类、系统是否允许排除区、手势与系统姿态的相似度。 因变量:系统胜率、应用被取消的比例、意图–结果不一致、逃离应用是否仍可靠。
实验室里如果关掉系统手势再测应用手势,测到的是无争用的识别率,不能代表真机。不要只统计「手势成功率」而不拆开是谁成功。被困任务(没有系统手势就无法离开)要单独做安全停线,不能当成普通可用性题目。
边界
受监督的展陈或锁屏设备会关掉系统手势,优先级关系被策略取消,不是被应用推翻。桌面窗口里的网页手势和操作系统触控板手势是另一套仲裁。用户在辅助功能里用按钮导航代替手势时,争用面消失。系统提供的排除区只在全屏、短时间、明确声明的场景有效,普通信息流页面不能靠它把返回抢走。
怎么落地
- 不要把与系统同形的手势当作完成关键任务的唯一手段;并列一个按钮或明确的页内控件。
- 全屏场景若申请延迟系统手势,同时保留可见的离开方式,并在离开全屏后立刻把优先级还回去。
- 在每个会注册滑动的页面上,列出会与系统冲突的方向,逐一决定「让给系统」还是「提供替代」。
- 验证:在每一种会抢手势的页面上做系统的返回、回主屏、唤出控制中心;应用不得挡住。再做应用自己的滑动。任何一次「想翻页却出了应用」或「想出应用却翻了页」,都是优先级没有被当成裁决规则来设计。