C3.12.1System multi-finger gestures preempt apps设计研究

系统级多指手势优先于应用手势

别名: 系统手势优先 · three-finger swipe · 多任务手势

概念解释

三指、四指的滑动、捏合、点按,在当代系统里首先属于系统壳:切应用、回主屏、调出多任务、有时是全局撤销。同一接触上如果应用也在听,仲裁结果是系统赢。应用不能假设自己能完整吃掉一次三指滑动。

机制

系统手势识别器活在窗口服务器或手势导航层,比应用的触摸回调更早看到触点。一旦指数达到保留值并满足方向或捏合模式,系统 capture 触点,应用收到的是 cancel 或根本收不到后续 move。这样设计是为了让用户在任何应用里都能逃出——包括全屏、卡死、不肯画返回按钮的应用。优先权因此是逃逸通道,不是对应用的刁难。应用若在三指落下时已经开始自己的动画,系统一抢,动画会停在半截,这是优先权的可见后果。

怎么研究

在全屏应用里同时注册三指滑动,与系统“切应用”对打。记录谁先 capture、应用是否收到 cancel、用户最终到了哪一屏。自变量包括系统手势开关、全屏 vs 普通窗口、iPad 与 iPhone 的不同保留集。把系统手势关掉作为对照,才能知道应用识别器本身是否工作。现场若大量出现“画到一半跳到了别的应用”,就是优先权在用户未预期时开火。

边界

桌面级触控板的三指可能被用户改成“拖移窗口”而不是切应用,保留集不是常量。Android 厂商皮肤对三指截屏、四指分屏各有一套,不能拿某一系统的表当全世界。触控笔不计入指数时,两指加一笔可能被当成两指。辅助功能占用三指点按时,系统优先权转到辅助服务,应用更加吃不到。

怎么落地

  • 不要把核心操作放在三指或四指滑动上;假定这些接触随时会被系统拿走。
  • 收到 touch cancel 时把应用内手势收干净,不要留下半拉的选区或卡住的工具。
  • 在目标 OS 的默认手势导航下,用三指滑过你的全屏画布。若进了多任务而不是你的命令,优先权符合预期。再打开“关闭系统手势”的开发选项核对:只有那时应用才应吃到完整轨迹。

延伸

  • 同组C3.12.2 应用不应占用系统保留的多指手势 · C3.12.3 系统手势的存在会截断应用内的同形手势
  • 相邻C3.11 双指与多指点按 · C3.31 系统手势与应用手势的优先级
  • 站内检索system gesture · touch cancel · three-finger swipe

同组卡片

快捷操作

分享

分享当前页面

ios_share

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