撤销
机器不会犯错,撤销是为人设计的,所以撤销的设计应该符合人类的心智模型,让用户觉得:他不会犯错,他做的一切都是合理的。撤销并不一定能让用户直接达到目标,但可以提供信任感,提升用户在使用产品时的信心和控制感,鼓励用户放心地探索。
单词科普:撤销undo,恢复redo,可逆reversible
撤销undo的类型
分类1)
渐增动作 :有数据的变更,删除或重新添加数据。剪切、粘贴、画图、输入、删除都是有数据部件的动作。
过程动作:仅仅是对数据的操作,没有添加或删除数据。如,在文字处理工具中对段落重新设置格式,在图形处理工具中对图进行旋转。
分类2)
隐藏撤销:只有撤销图标,没有提示撤销什么,比如ctrl+Z。
解释性撤销:有提示文案撤销什么,如:撤销对单次“design”的输入
分类3)
单次撤销:既可以是过程动作也可以是渐增动作,两次连续的单次撤销通常会撤销已经做出的撤销,返回在第一次撤销之前的状态,如PS里的ctrl+Z,ctrl+Z。
多次撤销:PS里的ctrl+Alt+Z。如果产品要实现多次撤销,就必须有一个操作堆栈,堆栈的深度根据用户的偏好设计,堆栈遵循后进先出(LIFO)的撤销准则。PS里的历史记录,是有解释性的多次撤销。

单次撤销和多次撤销都是依此序撤销,撤销后旧的路径不可用,用户不能选择只撤销其中的一步。
分类撤销:对撤销分类,不同类别有着各自的撤销工具,彼此不受影响。如格式撤销功能,文本撤销功能。
版本记录和还原:更大意义的撤销,针对整个文档的撤销,概念更宽泛。

一个已删除数据的缓冲区:用户想要恢复的是数据部件库,而不是简单的过程后进先出堆栈。除了正常的撤销堆栈外,我们还需要创一个手机所有已删除文本或数据的独立缓冲区,如果已删除数据的缓冲区中的项有简单的时间戳和文档名,会更好用。如浏览器的历史记录,可选择恢复哪条。

恢复redo
恢复是对撤销进行撤销。在多次撤销中,恢复能避免糟糕情形的出现。在单次撤销中,第二次撤销就成了恢复。撤销和恢复功能可以成为一个比较控件,让用户反复对比,在图像处理软件中比较常见。
冻结:锁定文档中的数据不可改变,可添加新的数据。常用于图像处理工具中的锁定。
防撤销操作:不能撤销的操作,如发出去的电子邮件不存在撤销。
撤销的运用
Windows系统中,垃圾回收站的还原,相当于对删除的撤销:

iOS系统中摇一摇对输入内容的撤销:
