C3.33.2Timed undo window after gesture commit设计研究

部分手势默认给出短暂撤销窗口而非立即生效

别名: 撤销窗口 · 延后提交 · undo toast

概念解释

侧滑归档、下拉触发的批量动作,常常先在界面上移走对象,真正的提交推迟数秒,期间用一条“撤销”提示占住。窗口不是普通撤销栈的替代品,而是给误触发准备的短缓冲。过了窗口,命令才进账本或上服务器。

机制

手势误分类的发现往往在松手后一两秒:用户看见邮件消失才意识到自己在滚列表。把提交延后到注意已经落到后果上,正好对准这条发现延迟。实现是乐观 UI 加可取消的定时器:到时才 commit。窗口太短,发现来不及;太长,对象处于既不在列表也不在服务器的幽灵态,通知与同步会乱。它补的是手势的发现延迟,不是给所有点击都加倒计时。

怎么研究

制造误侧滑,变化窗口 2 / 5 / 10 秒,记录成功挽回率、用户是否注意到提示、以及窗口内二次操作(新的手势)是否把提示挤掉。因变量是挽回,不是提示曝光。提示被列表滚动带走应单独编码。

边界

支付、发送不可收回的信息,窗口若存在必须真正拦住出站,而不是只挡界面。离线时窗口结束才写入本地队列,仍要允许之后的普通撤销。连续滚动没有这种窗口。窗口失败不能当成“已经给过撤销了”来降低触发门槛。

怎么落地

  • 对误触发率高的手势命令做乐观移除 + 数秒撤销条;到时才调用提交。
  • 撤销条要钉在安全区,不被下一条手势或键盘顶掉。
  • 故意误滑一封信:在窗口内点撤销应完整恢复位置与未读状态;过窗后走普通撤销栈。

延伸

  • 同组C3.33.1 手势触发的动作应遵循与点击操作相同的可撤销原则 · C3.33.3 惯性滚动等连续手势本身不是可撤销的操作单元,无需撤销语义 · C3.33.4 不可逆的手势动作应提高触发门槛,而非仅提供撤销
  • 相邻C3.17 侧滑操作项 · C3.19 手势冲突与消歧
  • 站内检索undo toast · optimistic UI · grace period

同组卡片

快捷操作

分享

分享当前页面

ios_share

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