iPhone人机界面常见任务处理方法是本文要介绍的内容,如果您具有使用桌面计算机或便携式计算机应用程序的经验,那么您会发现iPhone应用程序处理很多常见任务的方式与它们不同。
本节从人机界面的角度描述了这些常见任务;关于代码实现的技术细节,请参考iPhone应用程序编程指南。继续上一节 iPhone人机界面常见任务处理方法 (1)的内容开始介绍。
启用推送通知
当您的应用程序注册了“苹果推送通知服务”时,您可以在有新数据到来时向用户发出警告,即使您的应用程序没有运行。当设备收到的消息是发给一个没有运行的应用程序时,它可以通过以下方式通知用户:
在应用程序的主屏幕图标上更新一个 标记
播放警告声音
显示一条警告消息
或者您可以组合使用以上方式。用户的反应可能是启动应用程序来处理新数据,或者仅仅是注意到有新数据到来就可以了。(要了解如何在代码中处理推送通知,请阅读苹果推送通知服务编程指南。)
注意:推送通知的投递是无保证的。此外,用户也可以拒绝接收系统范围内的通知。推送通知的目的是提醒用户有新数据到达,而不是向您的应用程序传递关键的数据。
内置的设置程序中的“通知”部分为每一个注册了“苹果推送通知服务”的应用程序提供推送通知的设置。针对每一个应用程序,iPhone OS都可以让向用户设置是否允许标记,声音和警告消息。
您应该花一些时间来思考哪种类型的事件更能让通知引起用户的注意。通知应该向用户提供有用的,可操作的信息,这些信息是用户即使在没有使用您的应用程序时也想要得到的。
当您确定了用户可能关心的事件之后,您还应该让用户决定每种事件应该产生什么类型的通知(如果有通知的话)。如果用户无法定制您的应用程序的推送通知,那么用户可能会被他们不感兴趣的通知所打扰 。
用户可以选择他们想要接收的通知的类型,因此以下三种类型您应该全部支持:
标记。 标记是一种对用户打扰最小的方式,它告诉用户有新的他们可能感兴趣的内容出现。标记是一个红色的小椭圆形,出现在主屏幕图标的右上角。您对于标记的外观没有任何控制权,它仅包含数字,不包含字母和标点符号。
标记适用于告诉用户有多少项有待他们查阅。例如,标记中的数字表示的可能是未读的消息数,新分配的任务数,或当前有多少个远程玩家正在进行游戏。
声音。 您可以提供自定义的警告声音,也可以使用内置的警告声音。如果您创建了自定义的声音,一定要保证它简短,独特并且制作专业。(要了解有关自定义声音的技术要求,请参考苹果推送通知服务编程指南中的“准备自定义警告声音”一节。)请注意,当有通知被投递时,您不能强制使设备振动;用户能够控制收到警告时是否伴有振动。
如果通知到达本身就为用户提供了足以采取行动的信息,在这种情势下,采用一种容易辨识的声音是非常适合的。例如,一个协同任务管理系统在成员的任务完成时可能会伴随着一段独特的声音。仅仅是听到这种声音,用户就知道任务已经完成了。
警告。 警告是一种通知用户有新内容时最打扰用户的一种方式。在警告的顶端显示您的应用程序的名称,在它下面是您发送的消息,在警告底部有一至两个按钮。如果您指定了两个按钮,则警告会在左侧显示“关闭”按钮,右侧显示“查看”按钮(用户点击“查看”按钮可以在解除警告的同时启动您的应用程序)。如果您只指定了一个按钮,则警告只显示一个“确定”按钮。“关闭”按钮和“确定”按钮都会关闭警告而不会打开您的应用程序。
警告会打断用户的工作流程,因此最好谨慎地使用它,并且只用它来投递有关某事件的简短的,重要的消息。特别地,一定要避免在您的警告消息中包含任何广告内容。
保证应用程序的可用性
一个易于使用的应用程序应该允许有障碍的用户在辅助程序或设备的帮助下可以成功使用。iPhone OS设备包含许多功能,使所有用户都可以更加方便地使用该设备,比如可视化语音邮件,缩放以及语音控制功能。您无需在应用程序中采取任何动作,用户可以直接获益于这些功能。
有了VoiceOver,事情就变得不一样了。VoiceOver是苹果公司一项创新性的屏幕阅读技术,它让用户无需看到屏幕,就可以控制他们的设备。为了确保VoiceOver用户可以充分地使用您的应用程序,您可能需要提供一些关于用户界面中视图和控件的自定义信息。
幸运的是,在默认情况下,UIKit控件和视图是易于访问的,因此,当您以完全标准的方式使用这些标准元素时,您只有很少的额外工作要做(如果有的话)。用户界面的自定义程度越高,您需要提供的自定义信息就越多,以便VoiceOver可以正确地向具有视觉障碍的用户描述您的应用程序。
重要:为了使您的应用程序易于访问,您要做的工作包括为VoiceOver提供它所需的信息来帮助用户使用您的应用程序。您不需要为了适应VoiceOver而改变用户界面的视觉设计。
让您的iPhone应用程序易于被VoiceOver用户访问是非常正确的做法。这种做法还可以增加您的用户群,并有可能帮助您满足由各主管机构创建的可用性准则。
提供搜索功能并显示搜索结果
UIKit提供了搜索栏控件,您可以使用它显示一致的启动搜索的界面,但要您需要在您的应用程序中实现搜索功能。(要了解有关搜索栏的更多信息,请参考“搜索栏”;要了解有关在代码中处理搜索结果的更多信息,请参考UISearchDisplayController类参考。)为了确保搜索拥有实用而方便的用户体验,请花一些时间考虑如何实现搜索过程以及如何显示其结果。
一般来说,您应该:
为您的数据建立索引,以便随时进行搜索。
实时过滤本地的数据,一旦用户开始输入,您就显示结果,并且随着用户继续输入而逐步缩小结果范围。
如果可能的话,在用户输入时也同时过滤远程数据,但是,如果这部分的响应时间有可能将搜索结果的计算推迟1-2秒钟以上,一定要经过用户的允许。
在列表上面显示搜索栏或者在列表内显示索引。
避免为搜索打开一个标签页,除非它是您应用程序中的主要功能,应该被标识为一个不同的模式。
虽然实时过滤数据通常能够产生出色的用户体验,但这并不总是可行的。如果无法实时过滤数据,您可以在用户在键盘上点击“搜索”按钮之后再开始搜索过程。如果您要这样做,一定要提供有关搜索进度的反馈信息,以便让用户知道搜索进程没有停止。一种方法就是尽快显示文本结果,并为那些可能需要更长时间检索的数据显示占位符内容。
例如,在YouTube中,用户点击“搜索”按钮发起视频的搜索。如果网络连接速度很慢,YouTube会先显示“载入中……”消息和旋转的活动指示符,让用户知道搜索正在进行。然后,YouTube会显示一个结果列表,其中,每一行填写搜索的文本结果(比如视频的标题和收视率),以及带有虚线轮廓的立方体自定义图像。随着用户浏览视频标题的列表,下载完的视频缩略图会逐步替换掉原来的虚线立方体。像这样,在更多的数据仍在下载时向用户显示部分搜索结果,能够及时地为用户提供有用的信息。
如果您处理的数据可以归类于多个不同的类别,您可以提供一个范围栏。范围栏包含至多4个范围按钮,每个按钮代表一种分类。例如,“邮件”程序提供了一个范围栏,允许用户将他们的搜索集中在邮件的发件人,收件人或主题字段,或者将搜索范围扩大至包含所有的字段。如果范围栏能够帮助用户集中他们的搜索,或者能够大大减小搜索结果的数量,请您考虑使用范围栏控件。(要了解如何在您的代码中实现范围栏,请参考UISearchBar类参考。)
使用用户的位置信息
用户喜欢能够自动使用他们的物理位置对内容进行标记的功能,或者查找当前在附近的朋友。用户同时也希望当他们不想与他人分享自己的位置时能够禁用这些功能。用户可以通过“设置” > “一般”中的“位置服务”设置来选择同意(或拒绝)系统范围内对他们的物理位置的访问。
如果用户关闭了位置服务,而随后使用的应用程序功能需要获知他们的位置,则用户会看到一个警告,此警告告诉他们必须改变他们的首选项设置才能使用此功能。该警告不允许用户在应用程序的内部做此更改;相反,他们必须进入设置应用程序改变他们的首选项设置。这样可以确保用户充分意识到他们正在授予整个系统使用他们位置信息的权限。
为了让用户知道他们为什么要打开位置服务,您最好只在用户试图使用一项显然需要获知他们当前位置的功能时,才显示警告。例如,当位置服务关闭时,用户仍然可以使用地图应用程序,但是,当他们访问发现并跟踪其当前位置的功能时,会看到警告。
如果位置服务处于关闭状态,iPhone OS会在您的应用程序第一次试图访问位置信息时显示警告。Core Location框架为您提供了一种获取用户偏好设置的方法,使您避免不必要或不适当地触发警告。(要了解关于这个编程接口的更多信息,请参考Core Location框架参考。)
知道了用户的偏好设置信息,您就可以尽可能准确地为需要位置信息的功能触发警告,或是完全地消除警告。
如果您的应用程序在没有这些信息的情况下无法执行它的主要功能,您最好在用户启动应用程序时尽快让他们看到警告。用户不会为此感到困扰,因为他们明白应用程序的主要功能依赖于知晓他们的位置。
如果用户的位置不是您应用程序基本功能的一部分,您可以选择简单地限制那些用到位置信息的功能。例如,当位置服务关闭时,相机应用程序会自动关闭将用户的位置添加到他们所拍摄的照片的功能。但应用程序并不会阻止用户拍照,除非他们改变偏好设置的选项,这是因为“将位置信息添加到照片”只是一个附加功能,而不是基本功能。
如果某项功能需要位置信息才能工作,一定要避免在用户实际选择该功能之前执行任何编程调用触发警告。(获取用户偏好设置信息的调用不会触发警告。)这样,您就可以避免让用户感到奇怪,为什么您的应用程序在用户做一些看似不需要位置信息的事情时,想要得到他们的位置信息。
处理方向的变化
用户可以随时旋转iPhone OS设备,并且他们期望正在浏览的内容做出适当的调整。在您的iPhone应用程序中,请务必:
注意加速度表的值(关于加速度表和加速度表编程接口参考的更多信息,请阅读iPhone应用程序编程指南)。如果合适的话,您的应用程序应该对所有的设备方向变化做出响应。
如果您的应用程序用户界面的某一部分只在一个方向上显示内容,则该区域只适于在此方向上出现,而且不需要对设备方向的变化做出响应。例如,当用户选择一个iPod视频来观看时,无论当前设备方向如何,该视频都横向显示。这向用户表明,要旋转设备以便更好地观看该视频。该例中最重要的一点是,iPod没有提供“旋转”按钮;相反,用户知道要旋转设备,因为视频是横向显示的。
让用户旋转设备来正确地浏览应用程序用户界面中需要特定方向的部分。避免创建新的控件或定义新的操作,告诉用户旋转设备。
利用一步操作就能改变方向的过程,完成更顺畅且往往更快的旋转。但是,如果您的屏幕布局非常复杂,当发生方向变化时,您可以选择执行一种淡入淡出的转换。要了解如何在您的代码中支持一步操作过程,请参考UIViewController类参考。
用户经常因为想要“看到更多”而将他们的设备旋转为横向。如果您只是按比例放大屏幕的内容,则无法满足用户的期望。相反,您应该重新打包文本行,而且如果必要的话,重新安排用户界面的布局,以便更多的内容填充到屏幕当中。
小结:iPhone人机界面常见任务处理方法 (2)的内容介绍完了,希望本文对你有所帮助!深入了解这iphone应用程序,请参考下面几篇文章。