什么时候模态UI可以接受?

时间:2008-09-30 13:02:42

标签: user-interface modal-dialog

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

  • 他们偶尔会采取行动,不常见且很重要,而且
  • 它们本质上是原子的;您要么完成指定所有打印选项并完成它,要么取消整个节目。

让我们整理一个小风格指南。建议任何用例,其中对话框是首选的表示,以及为什么它是首选。对话框可以是非模态的吗?如果是,那么如何标记事务边界,因为取消不再具有明确的含义。你使用Apply按钮吗?

5 个答案:

答案 0 :(得分:14)

IMO,模式接口只应在 HAVE 处理对话框正在进行的操作或在应用程序可以继续之前询问时使用。在任何其他时间,如果您使用对话框,它应该是非模态的。

答案 1 :(得分:5)

在进行非模态窗口时,您可能希望确保它们是唯一的:您实际上不需要两个相同的工具箱(例如,在图形程序中)或两个相同的首选项对话框(我在产品中看到过这个),这可能会让人感到困惑。

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

不知何故,模态对话框告诉用户“停止其他所有操作并完成你正在做的事情”,这有其用途,如Stephen Wrighton's answer中所述。

答案 2 :(得分:2)

根据我的经验,在UI中很少有东西是模态的。其中一个最好的例子就是Eclipse,也许是网站用户非常熟悉的一个例子。虽然它有一些模态对话框,我在这里只讨论核心IDE,但它们大致分为三类:文件操作,首选项对话框和参数对话框。

偏好对话框虽然是传统的模态,但也不一定是模态的。您所要做的就是查看Mac OS偏好模型,其中配置更改立即发生,仅在变更可能会对正在进行的工作造成破坏的情况下引入模态行为。

简而言之,我要说的是对模态应该是什么的一个很好的总结。使用时,这个集合的例外应该是合理的。

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

答案 3 :(得分:0)

用户登录窗口如何,在您登录之前,您不能(或不应该)使用应用程序的其余部分,假设需要安全性。

答案 4 :(得分:0)

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