C2.07.1Touch-up activation and cancellation设计
抬起触发允许中途反悔
别名: 抬起触发 · 取消 · 反悔
概念解释
抬起触发在手指离开时才提交操作,因此用户按下后可观察反馈、滑出目标或取消区,再抬起放弃。它把按压视为可逆的候选阶段,给误触和犹豫留出恢复空间。
机制
按下进入 pressed 状态,移动更新候选或取消状态,抬起时依据当前位置决定提交或取消。这套"按住—核对—抬起"闭环不是触屏时代凭空发明的,而是继承自物理按钮早就建立的直觉:门铃、电梯楼层键、机械开关都允许用户按下手指之后、真正松开之前改变主意——只要在按住的同时把手指滑出按钮范围再松手,就不会触发。几乎所有平台的标准按钮控件默认就是照这套状态机实现的,这意味着用户对"按住可以反悔"这件事的预期,是从系统里其他每一个原生按钮反复确认过的,而不是这一个控件单独教会他们的;一旦自定义控件没有照抄这套行为,用户会带着这份通用预期去操作,却发现滑出并不能取消,体验上感觉像是控件坏了而不是"这个控件设计得不一样"。
边界
抬起触发会比按下触发多一个确认时刻,极低风险、连续或追求即时响应的操作未必需要它。取消也不能依赖过小区域或隐藏规则,否则会变成额外负担。这套状态机也不该被简单套用到所有触摸交互上:需要立即产生连续反馈的场景(比如画笔落纸的瞬间),如果也套用"抬起才算数"的判定,反而会显得迟钝——是否采用抬起触发,取决于这个操作有没有"先候选、再反悔"这段中间状态的价值,而不是把它当成所有按钮的默认答案。
怎么落地
- 对普通按钮保持按压态、悬停候选和取消态可见。
- 允许滑出后取消,并在重新进入时恢复候选状态。
- 验证办法:把应用里所有自定义的、外观像按钮的组件逐一测试滑出取消是否生效,并以系统原生按钮的行为作为对照基准,找出哪些自定义组件违背了用户已经建立的通用预期。