总的来说,模态界面会吸引大石头。另一方面,我想不出更好的方法来处理 文件打开..., , 或者 打印... 我认为这是因为

  • 它们是偶然的行为,不常见且重大,并且
  • 它们本质上是原子的;您要么完成指定所有打印选项并完成它,要么取消整个演出。

让我们整理一些风格指南。建议首选对话框的任何用例以及首选对话框的原因。对话框可以是非模态的吗?如果是,您如何标记事务边界,因为“取消”不再具有明确的含义。例如,您是否使用“应用”按钮?

有帮助吗?

解决方案

IMO,模态界面仅应在以下情况下使用: 在应用程序继续之前处理对话框正在执行的操作或询问的任何内容。在任何其他时候,如果您使用对话框,它应该是非模式的。

其他提示

在创建非模态窗口时,您可能希望确保它们是唯一的:您实际上并不需要两个相同的工具箱(例如在图形程序中)或两个相同的首选项对话框(我在产品中看到了这个),这充其量可能会造成混乱。

另一方面,我很欣赏“搜索/替换”对话框是非模式的:我可以返回文档并取消上次更改、跳过其他地方等;而不丢失当前设置。

不知何故,模式对话框告诉用户“停止其他一切并完成你正在做的事情”,这有其用途,如 斯蒂芬·赖顿的回答.

根据我的经验,UI 中很少有东西应该是模态的。Eclipse 是最好的示例之一,并且可能是该站点的用户非常熟悉的示例。虽然它有一些模式对话框,而且我在这里只讨论核心 IDE,但它们主要分为三类:文件操作、首选项对话框和参数对话框。

首选项对话框虽然传统上是模态的,但也不必是模态的。您所要做的就是查看 Mac OS 首选项模型,其中配置更改会立即发生,并且仅在更改可能会破坏正在进行的工作的情况下才会引入模式行为。

简而言之,我想说的是,这是对模态的一个很好的总结。该组的例外情况应根据用途进行充分证明。

  • 参数输入对话框(示例:重构向导。反例:查找对话框)
  • 文件操作
  • 确认将立即产生破坏性影响的行动

假设安全性是必要的,那么用户登录窗口怎么样,在登录之前您不能(或不应该)使用应用程序的其余部分。

我认为区别在于,如果在显示对话框时用户可以在应用程序中执行任何操作,那么它不应该是模态的。这包括复制/粘贴操作。就我个人而言,如果文件/打开和打印对话框也不是模态的,我更喜欢它。我认为模式对话框是设计薄弱的标志,是快速发布代码所必需的罪恶。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top