[译]用户交互:拖放

使用单个手指,用户可以通过将内容从一个位置拖动到另一个位置来移动或复制选定的照片、文本或其他内容,然后抬起手指将其放下。

触摸并握住选定的内容使其看起来飞起并粘附在用户的手指。随着内容被拖动,效果和视觉提示将识别可能的目的地。系统还会显示一个标记,指示何时不可放下,或者会导致复制内容而不是移动内容。对于开发人员指南,请参阅拖放在UIKit中。

1、来源和目的地
拖放涉及将选定的内容从源位置移动到目的地。这些位置可以位于同一个容器中,如文本视图,也可以位于不同的容器中,如分割视图两侧的文本视图。例如,在笔记中,用户可以将选定的文本拖动到同一笔记中的新位置。在提醒中,用户可以将单个提醒拖出一个列表并将其放入另一处。

在iPad上,源和目标位置也可以存在于不同的应用程序中,实现跨应用程序交互,例如将照片从Safari中的网页拖动到Mail中的新消息。拖动内容时,用户可以通过多任务访问另一个应用程序,退出主屏幕或从屏幕底部向上滑动以显示停靠点。

注意
在应用程序之间拖放内容始终会导致内容的重复而不是移动。

2、支持拖放
拖放是一种高效,直观的功能,用户希望在整个系统中普遍实现。如果您的应用包含或引起人们可能想要移动,复制或插入的文字,照片,视频,音频或其他内容,则应用程序应支持拖放操作。

让拖放支持所有可选和可编辑的内容。可选内容应可拖动,并且可编辑内容应接受放下的内容。还要确保你的应用程序支持复制和粘贴这些区域。

适用时允许将内容放在控件上。通常,配置允许数据输入或选择的控件(如文本字段)接受放下的内容。

尽可能使用标准文本视图和文本框。这些系统提供的元素包括内置的拖放支持。有关相关指导,请参阅文本字段和文本视图。

为了提高效率,考虑支持多项目拖放。在许多应用程序中,用户可以用一根手指拖动单个项目,并在拖动时通过用另一个手指轻敲它们来选择其他项目。所选项目一起移动并出现在拖动原始项目的手指下方。然后用户将这些项目作为一个组拖放,并将它们放在所需的目的地上。例如,主屏幕允许多个应用程序图标被选中并一次拖入文件夹。某些应用程序(如照片)提供了一种选择模式,可在拖动之前选择多个项目。

确定在应用程序中拖放内容是否会导致移动或复制。一般来说,当源容器和目标容器是相同的(在文档中拖动文本)时,移动是有意义的,而当它们不同(在文档之间或应用程序之间拖动)时,复制是有意义的。然而,情况并非总是如此。最重要的是,拖放应该是直观的。在提醒中,在列表之间拖动提醒移动它们而不是复制它们,因为这是人们所期望的。在应用程序之间拖放内容总是会导致复制。

尽可能让人们撤消拖放。通常,当用户无意中将内容放在错误的目的地时,他们应该能够使用“撤消”将您的应用恢复到之前的状态。也就是说,放下的内容应该被删除,并且如果它从应用程序的其他位置移动过来,则恢复到其原始位置。

考虑激活弹簧连接。通过弹簧连接,用户可以通过拖动选定内容并暂停在它之上(而不放下内容)来激活某一控件,如按钮和分割控件。例如,在邮件中,可以将选定的邮件拖动到导航栏的“后退”按钮上以访问邮箱层次结构中的其他位置。永远不要让跃出加载是激活控件的唯一方法。用它作为辅助探索的方式。在大多数情况下,弹簧连接的控件也应该响应轻击手势。

3、提供拖曳内容
如有必要,自定义拖动项目预览。通常,在用户手指下显示的预览应该是被拖动内容的半透明表示。此外观提供上下文,指示正在进行拖动,并使用户能够看到拖动内容下的目标。

尽可能提供拖放数据的多个表示,按照从高到低的顺序排列。例如,在提供在线艺术时,您的应用可以按照该顺序提供PDF矢量表示,具有透明度的无损PNG图像以及没有透明度的有损JPEG图像。这样,目的地可以选择可以导入的最高质量的表示。

适用时,将自定义对象的本地版本呈现为最丰富的数据形式。例如,允许人们拖动图表的应用程序应首先显示原生图表对象。然后,它应该为不支持图表对象的应用程序提供替代方案,如图表的图像版本。

当您的应用内容传输耗时或资源密集时,执行一个文件提供延期扩展。一个文件提供程序扩展管理传输过程并确保它完成,即使您的应用程序不再运行。请注意,在用户放下内容之前不要开始传输过程。

当您的应用内容需要时间传输时提供进度信息。如果必须下载内容或需要时间复制大文件,请提供进度信息。至少要提供内容的总大小,以便目的地可以计算剩余时间并显示适当的进度指示符。

4、接受放下的内容
使用视觉提示来识别潜在目标并预览放下内容的效果。突出显示,插入点指示符和动画都是识别可能的目的地的好方法。视图可能会随着内容被拖拽而微妙地闪烁并改变颜色,或者段落可能会移开,为拖动的图像留出空间。当屏幕上有多个可能的目的地时,请一次确定一个目的地。如果源容器和目标容器相同,则突出显示可能是不必要的,除非将内容完全拖出源并重新输入。确保在内容放下或不再位于目的地之上时高亮显示被删除。

适当时自动滚动目标的内容。当内容被拖到目的地的边界之外时,您的应用可能需要确定是滚动目的地的内容还是允许用户继续拖动到完全不同的目的地。如果您的应用允许用户继续拖动,请考虑定义拖动项目位于其上方时导致自动滚动的区域。例如,当内容被拖动到主体区域的顶部或底部时,邮件中冗长的草稿消息会自动滚动。标准文本视图和文本字段自动采用此行为。

提取并显示放下内容的最丰富表示。例如,您的应用可能会提供多种图表表示。如果您的应用支持图表,它可以提取并显示原生图表对象。如果您的应用不支持图表,它可以提取并显示图表的图像版本。

适用时,只提取放下内容的相关部分。例如,如果用户将联系人从联系人拖到邮件消息中的收件人字段,则只使用姓名和电子邮件地址,而不是联系人的地址信息。

放下内容后,在表视图和集合视图中显示占位符。占位符暂时指示内容在完成传输后将驻留在哪里。

当放下的内容需要时间传输时显示进度。默认情况下,当应用程序之间发生耗时的转移时,系统会显示应用程序模式警告。考虑自定义显示进度的方式 – 例如通过在表格视图或集合视图中显示占位符的进度指示器 – 以便用户不会被打断使用您的应用程序。请注意,直到用户放下内容才开始传输过程。

当放下的内容需要一个过程时提供反馈。如果用户将内容放到控件上开始传输时(例如,将视频上传到共享站点),则表明该任务已开始并让用户了解其进度。

放下失败时通知用户。如果无法插入丢弃的内容(可能是因为文件传输中断),请通知用户放下操作失败。

将适当的样式应用于放下的文本。当源和目标支持相同样式的文本属性时,放下的文本应保持其原始字体,字体,大小和其他属性。否则,放下的文本应该采用目的地的风格。

当用户无法立即撤消拖放时,考虑提供一种巧妙的,直观的方式来决定退出。例如,共享应用程序可能会在发布放下内容之前提供中间共享表单。这个共享表单可以提供一种方式来提供额外的内容,比如状态消息,同时还提供一个取消按钮。当照片被拖动到共享照片流中时,照片会显示这种行为。

英文原文链接

发布者

奇遇

用户体验角度看世界。关于我 

发表评论

电子邮件地址不会被公开。 必填项已用*标注