总的来说,模态界面吮吸大石头。另一方面,我想不出更好的方法来处理文件打开... ,或打印... ,我认为这是因为< / p>
让我们整理一个小风格指南。建议任何用例,其中对话框是首选的表示,以及为什么它是首选。对话框可以是非模态的吗?如果是,那么如何标记事务边界,因为取消不再具有明确的含义。你使用Apply按钮吗?
答案 0 :(得分:14)
IMO,模式接口只应在 HAVE 处理对话框正在进行的操作或在应用程序可以继续之前询问时使用。在任何其他时间,如果您使用对话框,它应该是非模态的。
答案 1 :(得分:5)
在进行非模态窗口时,您可能希望确保它们是唯一的:您实际上不需要两个相同的工具箱(例如,在图形程序中)或两个相同的首选项对话框(我在产品中看到过这个),这可能会让人感到困惑。
另一方面,我很感激“搜索/替换”对话框是非模态的:我可以返回到文档并取消上次更改,跳过其他地方等等;不会丢失当前设置。
不知何故,模态对话框告诉用户“停止其他所有操作并完成你正在做的事情”,这有其用途,如Stephen Wrighton's answer中所述。
答案 2 :(得分:2)
根据我的经验,在UI中很少有东西是模态的。其中一个最好的例子就是Eclipse,也许是网站用户非常熟悉的一个例子。虽然它有一些模态对话框,我在这里只讨论核心IDE,但它们大致分为三类:文件操作,首选项对话框和参数对话框。
偏好对话框虽然是传统的模态,但也不一定是模态的。您所要做的就是查看Mac OS偏好模型,其中配置更改立即发生,仅在变更可能会对正在进行的工作造成破坏的情况下引入模态行为。
简而言之,我要说的是对模态应该是什么的一个很好的总结。使用时,这个集合的例外应该是合理的。
答案 3 :(得分:0)
用户登录窗口如何,在您登录之前,您不能(或不应该)使用应用程序的其余部分,假设需要安全性。
答案 4 :(得分:0)
我认为区别在于,如果在显示对话框时用户可以在应用程序中执行任何操作,那么它不应该是模态的。这包括复制/粘贴操作。我个人更喜欢它,如果文件/打开和打印对话框也不是模态的。我认为模态对话框是设计薄弱的标志,是迅速将代码推出门的必要之恶。