如果你是一个按钮,你只有一项任务

按钮行为、缓冲和“只有一项任务”

  • 许多人认为,按钮应当对 UI 所承认的每一次点击(视觉/触觉/声音反馈)执行一次动作。给出反馈却随后忽略该动作,被视为核心失败。
  • 受到批评的模式:动画阻塞了后续点击的处理,因此对旋转按钮的快速多次点击会部分或完全“消失”。
  • 也有人指出,按钮往往确实承担多种职责:传达它将要做什么、反映当前状态(切换模式)、确认输入,有时还要显示进度。
  • 关于何时可以忽略输入的争论:在布局变化期间、为避免控件移位导致误触,或在破坏性操作之后。

去抖、重复点击与可访问性

  • 一些人提出,意外的双击、震颤或“过度点击”是真实存在的问题;有些用户在意图“锁定”后可能希望重复输入被忽略。
  • 其他人反驳说,如果你要对点击去抖/忽略,就不应为这些点击给出正面反馈。
  • 建议:
    • 在进行中的动作完成前,禁用按钮或以视觉方式将其“锁存”。
    • 提供全系统选项,例如 iOS 的“忽略重复”,而不是把每个应用的启发式逻辑都写死。
    • 将错误状态(例如密码错误)视为硬中断,清除缓冲输入。

动画:价值与伤害

  • 强烈意见认为,现代 iOS/Android 过度使用动画,让界面感觉缓慢、无响应,有时还会阻塞输入。
  • 也有人仍然认为动画有价值,因为它能澄清发生了什么变化(例如,看到图像旋转有助于理解方向)。
  • 提出的原则:
    • 动画应当可中断,且永远不应成为逻辑门槛。
    • 动画的存在是为了支持功能(清晰度、掩盖真实延迟),而不是目的本身。
    • 提供全局“减少/禁用动画”选项。

更广泛的 UX 与设计主题

  • 对扁平化 UI 和持续重设计的抱怨:更难区分控件与内容,对比度更低,用户被迫重新学习界面。
  • 反方观点:如果遵守基本可供性(清晰的按钮、反馈、对比度、一致性),扁平化 UI 也可以表现良好。
  • 老软件和简单的组件集合因在资源受限下更迅捷、更可靠而受到称赞。

硬件与嵌入式类比

  • 有一段很长的分支讨论实体按钮去抖、竞态条件,以及糟糕的输入处理如何导致现实世界的故障。
  • 反复出现的主题:反馈与实际状态之间的紧密耦合至关重要;否则用户无法信任界面。