C3.33.1Gesture actions follow the same undo rules as taps设计研究
手势触发的动作应遵循与点击操作相同的可撤销原则
别名: 手势撤销 · 与点击同等 · command undo
概念解释
侧滑归档、双指撤销、长按删除若提交的是同一条模型命令,就应进入与点按该命令相同的撤销账本。不能因为入口是手势,就变成不可逆、或只给一种古怪的反向滑。可撤销性跟的是后果,不是轨迹。
机制
用户把命令记成“归档这封信”,不记成“一段向左的速度”。撤销系统若按入口分叉——点按有撤销、手势没有——同一后果会有两种法律地位,错误代价在更难发现的入口上更高。手势本就容易误触发,更需要同一套撤销。实现上应对准命令 ID:手势回调走 archive(id),撤销栈弹的也是 archive(id),而不是“撤销上一次滑动”。
怎么研究
让人用按钮和用手势各做一次破坏性命令,再要求恢复。记录能否找到撤销、路径是否同一套(摇一摇 / 工具栏撤销 / 反向滑)。把“只能反向滑才能救”和“与点击共用撤销栈”分开编码。误触发样本比故意操作更有信息量。
边界
连续操纵(滚动、捏合、画线)不是命令单元,不适用这条账本。系统级三指撤销若与应用撤销栈不同步,会出现“撤销了别的东西”。手势若只改变视图瞬态(露出操作底色尚未提交),还没有命令可撤销。同等原则不规定必须做几秒的撤销窗口。
怎么落地
- 把手势提交接到与按钮相同的命令函数和撤销栈。
- 撤销入口保持可见(工具栏、清单顶部),不要只靠反向滑。
- 分别用按钮和侧滑归档同一封信,再按撤销:两次都应回到同一状态。