C3.33.2Timed undo window after gesture commit设计研究
部分手势默认给出短暂撤销窗口而非立即生效
别名: 撤销窗口 · 延后提交 · undo toast
概念解释
侧滑归档、下拉触发的批量动作,常常先在界面上移走对象,真正的提交推迟数秒,期间用一条“撤销”提示占住。窗口不是普通撤销栈的替代品,而是给误触发准备的短缓冲。过了窗口,命令才进账本或上服务器。
机制
手势误分类的发现往往在松手后一两秒:用户看见邮件消失才意识到自己在滚列表。把提交延后到注意已经落到后果上,正好对准这条发现延迟。实现是乐观 UI 加可取消的定时器:到时才 commit。窗口太短,发现来不及;太长,对象处于既不在列表也不在服务器的幽灵态,通知与同步会乱。它补的是手势的发现延迟,不是给所有点击都加倒计时。
怎么研究
制造误侧滑,变化窗口 2 / 5 / 10 秒,记录成功挽回率、用户是否注意到提示、以及窗口内二次操作(新的手势)是否把提示挤掉。因变量是挽回,不是提示曝光。提示被列表滚动带走应单独编码。
边界
支付、发送不可收回的信息,窗口若存在必须真正拦住出站,而不是只挡界面。离线时窗口结束才写入本地队列,仍要允许之后的普通撤销。连续滚动没有这种窗口。窗口失败不能当成“已经给过撤销了”来降低触发门槛。
怎么落地
- 对误触发率高的手势命令做乐观移除 + 数秒撤销条;到时才调用提交。
- 撤销条要钉在安全区,不被下一条手势或键盘顶掉。
- 故意误滑一封信:在窗口内点撤销应完整恢复位置与未读状态;过窗后走普通撤销栈。