Questions tagged «user-interface»

有关软件与其人类用户互动的问题。


4
在敏捷开发中如何处理用户界面设计和相应的功能支持?
在敏捷开发过程中,通常主要侧重于用户故事,但是有时一个需求可能跨越多个用户故事。 例如,客户端可以为论坛中的所有用户请求搜索页面,并且在每个用户上可以执行多种操作,例如禁止用户,删除用户,重置密码等。 我们可以将此功能至少分为4个用户故事: 搜索用户 禁止用户 删除用户 重设密码 用户界面设计者将如何实现这样的用户界面?他/她是否应该处理第一个用户故事,然后开始为UI增加更多功能?但是,我认为最终的UI会搞砸了! 如果他决定使用整个功能(搜索+动作),那么如果这些动作的优先级较低,并且将在搜索功能完成后进行多次迭代,该怎么办?

1
当异步任务使用户体验不佳时
我正在编写一个COM插件,该插件扩展了迫切需要它的IDE。这里涉及许多功能,但是为了这篇文章,我们将其缩小到2: 有一个“代码资源管理器”工具窗口,其中显示一个树状视图,允许用户浏览模块及其成员。 有一个“代码检查”工具窗口,其中显示一个datagridview,可让用户浏览代码问题并自动修复它们。 两种工具都有一个“刷新”按钮,用于启动异步任务,该任务将解析​​所有打开的项目中的所有代码。该代码浏览器使用的解析结果建立树形视图和代码评审使用的解析结果,以找出代码问题并显示其结果的datagridview。 我在这里想要做的是在功能之间共享解析结果,以便在代码浏览器刷新时,代码检查会知道它并可以刷新自身,而无需重做代码浏览器刚刚进行的解析工作。 因此,我做了什么,将解析器类设置为事件提供者,这些功能可以注册到: private void _parser_ParseCompleted(object sender, ParseCompletedEventArgs e) { Control.Invoke((MethodInvoker) delegate { Control.SolutionTree.Nodes.Clear(); foreach (var result in e.ParseResults) { var node = new TreeNode(result.Project.Name); node.ImageKey = "Hourglass"; node.SelectedImageKey = node.ImageKey; AddProjectNodes(result, node); Control.SolutionTree.Nodes.Add(node); } Control.EnableRefresh(); }); } private void _parser_ParseStarted(object sender, ParseStartedEventArgs e) { Control.Invoke((MethodInvoker) delegate …

2
注册期间自动生成密码是一个好主意吗?
我正在为我正在从事的项目开发注册系统。 由于如果过程太长,用户往往不愿注册,所以我认为(至少最初需要)他们的电子邮件,然后将自动生成的密码发送给他们(这也使我可以验证他们的电子邮件地址) )。这也将阻止他们选择较弱的密码来快速完成注册。 到目前为止,我还没有发现任何弊端,但是由于我从未见过使用该系统的站点,因此恐怕还有一些弊端。 这是一个好主意吗? PS:当然,我也正在通过Facebook和其他类似服务实施注册,以使人们无需密码即可快速注册,但许多人可能出于隐私考虑或因为他们不愿意而选择经典注册使用任何这些服务。

1
设计一个应用程序框架,该框架将允许每个实现自定义UI的各个部分
我的任务是设计一个应用程序框架,该框架将允许每个实现自定义用户界面的各个部分。一个这样的例子就是实现(现在称它为客户端)可以定义要返回到特定屏幕的集合视图单元格。该框架仅负责出售适当的对象,以使构建应用程序变得更加容易,因为我们将构建一些外观相似的实例。 我目前对框架的方法是设计一个协调控制器,该控制器负责整个App中的所有演示和解雇事件。默认的Coordination Controller售卖框架内所有默认视图控制器,它们全部执行其相关任务,而不必提供配置的UI。例如:一个控制器将显示一个包含模板单元格的集合视图,没有什么特别的。这种设计的好处在于,它消除了控制器之间的耦合,还允许客户端覆盖默认的协调器,并为特定任务返回全新的视图控制器。 我遇到的问题是如何设计该框架,以允许客户端将自己的自定义UI添加到App中。 方法一 使框架需要一个视图工厂,并让该视图工厂负责出售所有相关视图。因此,在App Delegate中,我们可能会强制客户端创建一个CollectionViewCellFactory例如,并且该接口定义了任何符合类需要提供的所有单元。我继承了这种设计的代码库,并因为它过于抽象和可定制,而放弃了它。它为App的各个方面提供了大量的工厂,这为每个App的建立时间增加了几天的时间。 方法二 每个视图控制器都指定子类挂钩或设置API,以允许在运行时定义这些自定义UI类(类似于UISplitViewController允许调用者使用viewControllers属性设置控制器的方式)。为此,每个客户只需将基本协调控制器和每个控制器的表示形式子类化即可;在控制器上设置适当的值,以实现所需的UI。就像是 viewController.registerReusableCellsBlock = ^(UICollectionView *collectionView){ //perform custom registration } viewController.cellDequeueBlock = ^UICollectionViewCell<SomeProtocol> *(UICollectionView *collectionView,NSIndexPath *indexPath){ //dequeue custom cells } 当前,我将视图的数据源分离到一个单独的对象中,以提高可重用性并防止ViewController膨胀。这使得对视图控制器进行子类化以提供单元的接口更加困难,但并非不可能。 方法3 尝试设计框架并预期其使用可能是一个坏主意。也许最好的选择是允许子集具有最大的控制权,即使设置成本相对较高。然后,为多个客户构建了该模型之后,我可能会注意到出现的模式并开始沿路线进行优化。 我了解如何在框架内部进行自定义,而我正在努力解决的问题是如何最好地定义一个接口,该接口定义客户端对框架的潜在自定义点。 TL; DR 界面最复杂的部分涉及嵌套在“集合视图”单元格内的“集合视图”。这允许单元的水平分页和垂直滚动。这可以通过拥有一个管理水平单元格并使用新数据源配置每个单元格的收集视图的数据源来实现。 如何设计一个允许所有这些单元都可自定义的接口?


7
谁在S​​crum项目上使用UX?
好。假设您正在从事教科书Scrum项目。您有一个Scrum主管与产品负责人合作。接下来的冲刺是UI重-你的程序员开始构建屏幕的时候,你真的想有一些想法,他们打算什么样子。 谁来做线框图,何时做?产品负责人?有人支持产品负责人吗?Scrum高手?如果您有UX专家,他们是在冲刺开始后与编码人员一起工作,还是他们在故事卡和约束条件旁边预先提供了线框和模型,以指导和告知开发人员正在进行的工作? 我很确定我们需要一些UX帮助,但是我真的不确定在哪里应用它。 编辑:让我改一下这个问题。 您如何在敏捷项目中提供一致的高质量用户体验?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.