事件识别的制作方法

xiaoxiao2020-7-23  16

【知识产权代理】【专利服务】Tel:18215660330

专利名称:事件识别的制作方法
技术领域
本发明大体上涉及用户接口处理,包括但不限于,识别触摸输入的装置和方法。
背景技术
电子设备通常包括用于与计算设备交互的用户接口。用户接口可以包括显示器和/或诸如键盘、鼠标和触摸敏感表面的输入设备,用于与用户接口的各种方面交互。在具有触摸敏感表面作为输入设备的一些设备中,在特定的上下文中(例如,在第一应用程序的特定模式中),第一组基于触摸的姿态(例如,两次或更多次的轻敲、双击、水平挥击、垂直挥击、捏(pinch)、散开(depinch)、两指挥击)被识别为适合的输入,在其他上下文中(例如,不同的应用程序和/或第一应用程序内的不同模式或上下文),其他不同组的基于触摸的姿态被识别为适合的输入。结果是,识别和响应于基于触摸的姿态所需的软件和逻辑可能变得复杂,并且在每次更新应用程序或者向计算设备添加新的应用程序时可能需要修正。这些以及类似的问题可能出现在使用除基于触摸的姿态外的输入源的用户接口中。因此,期望具有用于识别基于触摸的姿态和事件以及来自其他输入源的姿态和事件的综合框架或机制,其易于适用于计算设备上的所有应用程序的几乎所有上下文或模式。

发明内容
为了解决前述的缺点,一些实施例提供了在具有触摸敏感显示器的电子设备中执行的方法。所述电子设备被配置成至少执行第一软件应用程序和第二软件应用程序。所述第一软件应用程序包括第一组一个或多个姿态识别器,并且所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有对应的姿态处理器。所述方法包括至少显示所述第二软件应用程序的一个或多个视图的子集,并且当至少显示所述第二软件应用程序的一个或多个视图的子集时,检测所述触摸敏感显示器上的触摸输入序列。所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分。所述方法还包括在检测所述触摸输入序列的第一阶段期间,传送一个或多个触摸输入的所述第一部分到所述第一软件应用程序和所述第二软件应用程序,从所述第一组中的姿态识别器中认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及使用对应于所述一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的所述第一部分。根据一些实施例,提供了在具有触摸敏感显示器的电子设备中执行的方法。所述电子设备被配置成至少执行第一软件应用程序和第二软件应用程序。所述第一软件应用程序包括第一组一个或多个姿态识别器,并且所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有对应的姿态处理器。所述方法包括显示第一组一个或多个视图。所述第一组一个或多个视图至少包括所述第二软件应用程序的一个或多个视图的子集。所述方法还包括当显示所述第一组一个或多个视图时,检测所述触摸敏感显示器上的触摸输入序列。所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分。所述方法包括确定所述第一组一个或多个姿态识别器中的至少一个姿态识别器是否识别一个或多个触摸输入的所述第一部分。所述方法还包括根据关于所述第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的所述第一部分的确定,传送所述触摸输入序列到所述第一软件应用程序,而不将所述触摸输入序列传送到所述第二软件应用程序,并确定所述第一组一个或多个姿态识别器中的至少一个姿态识别器是否识别所述触摸输入序列。所述方法进一步包括根据关于所述第一组一个或多个姿态识别器中的至少一个姿态识别器识别所述触摸输入序列的确定,使用所述第一组一个或多个姿态识别器中的 识别所述触摸输入序列的所述至少一个姿态识别器来处理所述触摸输入序列。所述方法还包括根据关于所述第一组一个或多个姿态识别器中没有姿态识别器识别一个或多个触摸输入的所述第一部分的确定,传送所述触摸输入序列到所述第二软件应用程序,并确定所述第二组一个或多个姿态识别器中的至少一个姿态识别器是否识别所述触摸输入序列。所述方法进一步包括根据关于所述第二组一个或多个姿态识别器中的至少一个姿态识别器识别所述触摸输入序列的确定,使用所述第二组一个或多个姿态识别器中的识别所述触摸输入序列的所述至少一个姿态识别器来处理所述触摸输入序列。根据一些实施例,提供了在具有内部状态的电子设备中执行的方法。所述电子设备被配置成执行包括具有多个视图的视图层次结构的软件。所述方法包括显示所述视图层次结构中的一个或多个视图,并且执行一个或多个软件元素。每个软件元素与特定的视图相关联,并且每个特定视图包括一个或多个事件识别器。每个事件识别器具有基于一个或多个子事件的一个或多个事件定义以及事件处理器,该事件处理器指定对目标的动作并被配置成响应于所述事件识别器检测到与所述一个或多个事件定义中的特定事件定义相对应的事件,而发送所述动作到所述目标。所述方法还包括检测一个或多个子事件的序列,并识别所述视图层次结构的视图中的一个作为点击视图(hit view)。所述点击视图确立视图层次结构中的哪些视图是有效涉及的视图(actively involved view)。所述方法进一步包括传送各自的子事件到用于所述视图层次结构中每个有效涉及的视图的事件识别器。用于所述视图层次结构中有效涉及的视图的至少一个事件识别器具有多个事件定义,并根据所述电子设备的内部状态选择所述多个事件定义中的一个。根据所选事件定义,在处理所述子事件序列中的下一个子事件之前,所述至少一个事件识别器处理所述各自的子事件。根据一些实施例,非暂态计算机可读存储介质存储由电子设备的多个处理器中的一个执行的一个或多个程序。所述一个或多个程序包括当由所述电子设备执行时使得所述电子设备执行上述任何方法的一个或多个指令。根据一些实施例,一种具有触摸敏感显示器的电子设备包括一个或多个处理器和存储用于由所述一个或多个处理器执行的一个或多个程序的存储器。所述一个或多个程序包括用于实现上述任何方法的指令。根据一些实施例,一种具有触摸敏感显示器的电子设备包括用于实现任何上述任何方法的装置。根据一些实施例,一种具有触摸敏感显示器的多功能设备中的信息处理装置包括用于实现上述任何方法的装置。
根据一些实施例,一种电子设备包括配置成接收触摸输入的触摸敏感显示单元和耦接到该触摸敏感显示单元的处理单元。该处理单元配置成至少执行第一软件应用程序和第二软件应用程序。所述第一软件应用程序包括第一组一个或多个姿态识别器,并且所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有对应的姿态处理器。所述处理单元配置成使得能够至少显示所述第二软件应用程序的所述一个或多个视图的子集;当至少显示所述第二软件应用程序的一个或多个视图的子集时,检测所述触摸敏感显示单元上的触摸输入序列。所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分。所述处理单元配置成,在检测所述触摸输入序列的第一阶段期间传送一个或多个触摸输入的所述第一部分到所述第一软件应用程序和所述第二软件应用程序;从所述第一组中的姿态识别器认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及用对应于所述一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的所述第一部分。根据一些实施例,一种电子设备包括配置成接收触摸输入的触摸敏感显示单元和耦接到所述触摸敏感显示单元的处理单元。所述处理单元配置成至少执行第一软件应用程序和第二软件应用程序。所述第一软件应用程序包括第一组一个或多个姿态识别器,并且所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有对应的姿态处理器。所述处理单元配置成使得能够显示第一组一个或多个视图。所述第一组一个或多个视图至少包括所述第二软件应用程序的一个或多个视图的子集。所述处理单元配置成,当显示所述第一组一个或多个视图时检测所述触摸敏感显示单元上的触摸输入序列(所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分);并确定所述第一组一个或多个姿态识别器中的至少一个姿态识别器是否识别一个或多个触摸输入的所述第一部分。所述处理单元配置成,根据关于所述第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的所述第一部分的确定传送所述触摸输入序列到所述第一软件应用程序,而不将所述触摸输入序列传送到所述第二软件应用程序;并确定所述第一组一个或多个姿态识别器中的至少一个姿态识别器是否识别所述触摸输入序列。所述处理单元配置成,根据关于所述第一组一个或多个姿态识别器中的至少一个姿态识别器识别所述触摸输入序列的确定,使用所述第一组一个或多个姿态识别器中的识别所述触摸输入序列的所述至少一个姿态识别器来处理所述触摸输入序列。所述处理单元配置成,根据关于所述第一组一个或多个姿态识别器中没有姿态识别器识别一个或多个触摸输入的所述第一部分的确定,传送所述触摸输入序列到所述第二软件应用程序,确定所述第二组一个或多个姿态识别器中的至少一个姿态识别器是否识别所述触摸输入序列;并根据关于所述第二组一个或多个姿态识别器中的至少一个姿态识别器识别所述触摸输入序列的确定,使用所述第二组一个或多个姿态识别器中的识别所述触摸输入序列的所述至少一个姿态识别器来处理所述触摸输入序列。根据一些实施例,一种电子设备包括显示单元,配置成显示一个或多个视图;存储器单元,配置成存储内部状态;以及处理单元,耦接到所述显示单元和所述存储器单元。所述处理单元配置成执行包括具有多个视图的视图层次结构的软件;使得能够显示所述视图层次结构的一个或多个视图;并执行一个或多个软件元素。每个软件元素与特定的视图相关联,并且每个特定视图包括一个或多个事件识别器。每个事件识别器具有基于一个或多个子事件的一个或多个事件定义以及事件处理器。所述事件处理器指定对目标的动作,并被配置成响应于所述事件识别器检测到与所述一个或多个事件定义中的特定事件定义相对应的事件,而发送所述动作到所述目标。所述处理单元配置成检测一个或多个子事件的序列;并识别所述视图层次结构的视图中的一个视图作为点击视图。所述点击视图确立所述视图层次结构中哪些视图是有效涉及的视图。所述处理单元配置成,传送各自的子事件到用于所述视图层次结构中每个有效涉及的视图的事件识别器。用于所述视图层次结构中有效涉及的视图的至少一个事件识别器具有多个事件定义,所述多个事件定义中的一个是根据所述电子设备的内部状态来选择的,并且根据所选事件定义,在处理所述子事件序列中的下一个子事件之前,所述至少一个事件识别器处理各自的子事件。


图1A-1C是例示了根据一些实施例的电子设备的框图。图2是根据一些实施例的示例电子设备的输入/输出处理栈的图。图3A例示了根据一些实施例的示例视图层次结构。图3B和3C是例示了根据一些实施例的示例事件识别器方法和数据结构的框图。图3D是例示了根据一些实施例的用于事件处理的示例部件的框图。图3E是例示了根据一些实施例的姿态识别器的示例类和实例的框图。图3F是例示了根据一些实施例的事件信息流的框图。图4A和4B是例示了根据一些实施例的示例状态机的流程图。图4C例示了根据一些实施例的图4A和4B的示例状态机到示例的子事件组。图5A-5C根据一些实施例以示例事件识别器状态机例示示例子事件序列。图6A和6B是根据一些实施例的事件识别方法流程图。图7A-7S例示了根据一些实施例的为了导航通过同时打开的应用程序而由事件识别器识别的示例用户界面和用户输入。图8A和SB是例示了根据一些实施例的事件识别方法的流程图。图9A-9C是例示了根据一些实施例的事件识别方法的流程图。图IOA和IOB是例示了根据一些实施例的事件识别方法的流程图。图11是根据一些实施例的电子设备的功能框图。图12是根据一些实施例的电子设备的功能框图。图13是根据一些实施例的电子设备的功能框图。贯穿整个附图,类似的附图标记指代相应的部分。
具体实施例方式具有小屏幕的电子设备(例如,智能电话和平板计算机)通常一次显示单个应用程序,即使在该设备上可能正在运行多个应用程序。许多这些设备具有配置成接收作为触摸输入的姿态的触摸敏感显示器。针对这样的设备,用户可能想要执行由隐藏的应用程序、(例如,在后台运行的并且不同时显示在电子设备的显示器上的应用程序,诸如在后台运行的应用程序启动器软件应用程序)提供的操作。用于执行由隐藏的应用程序提供的操作的现有方法通常需要,首先显示隐藏的应用程序,然后将触摸输入提供到目前所显示的应用程序。因此,现有方法需要额外的步骤。进一步地,用户可能不想看见隐藏的应用程序,但仍然想执行由隐藏的应用程序提供的操作。在下面描述的实施例中,通过发送触摸输入到隐藏的应用程序,并使用隐藏的应用程序处理触摸输入而并不显示隐藏的应用程序,实现了用于与隐藏的应用程序交互的改进的方法。因此,这些方法简化(streamline) 了与隐藏的应用程序的交互,从而消除了对显示隐藏的应用程序的额外的、单独的步骤的需要,同时提供了基于姿态输入与隐藏的应用程序交互和控制的能力。另外,在一些实施例中,这些电子设备具有至少一个带多个姿态定义的姿态识别器。这有助于姿态识别器在截然不同的操作模式下工作。例如,设备可以具有正常操作模式和辅助(accessiblity)操作模式(例如,对于视力受限的人)。在正常操作模式中,下一个应用程序姿态用于在应用程序之间移动,并且该下一个应用程序姿态定义为三指左挥击姿态。在辅助操作模式下,三指左挥击姿态用于执行不同的功能。由此,在辅助操作模式下 需要不同于三指左挥击的姿态以对应于下一个应用程序姿态(例如,在辅助操作模式下的 四指左挥击姿态)。通过使多个姿态定义关联到下一个应用程序姿态,设备可以依赖于当前的操作模式为下一个应用程序姿态来选择一个姿态定义。这提供了在不同的操作模式下使用姿态识别器的灵活性。在一些实施例中,带多个姿态定义的多个姿态识别器依赖于操作模式被调节(例如,在正常操作模式下由三指执行的姿态在辅助操作模式下由四指执行)。下面,图1A-1C和图2提供了示例设备的描述。图3A-3F描述了用于事件处理的部件以及这种部件的操作(例如,事件信息流)。图4A-4C和图5A-5C更详细地描述了事件识别器的操作。图6A-6B是例不事件识别方法的流程图。图7A-7S是例不使用图8A-8B、9A-9C和图10中的事件识别方法的操作的示例用户界面。图8A-8B是例示使用隐藏的打开的应用程序的姿态处理器来处理事件信息的事件识别方法的流程图。图9A-9C是例示使用隐藏的打开的应用程序或所显示的应用程序的姿态识别器来有条件地处理事件信息的事件识别方法的流程图。图10是例示为单个事件识别器从多个事件定义中选择一个事件定义的事件识别方法的流程图。现将详细地参考实施例,其示例在附图中例示。在下面的详细描述中,为提供对于本发明的彻底的了解而阐述了大量的具体细节。然而,本领域技术人员应当清楚,本发明可在没有这些具体细节的情况下被实现。在其他实例中,为了不不必要地使实施例的方面难以理解,没有详细地描述公知的方法、程序、部件、电路和网络。还应当理解,尽管术语第一、第二等等可以用在本文用于表示各种元素,但这些元素不受这些术语的限制。这些术语只用于将元素彼此进行区别。例如,在不脱离本发明的范围的情况下,第一接触可以称为第二接触,并且类似地,第二接触可以称为第一接触。第一接触和第二接触都是接触,但是它们不是同一接触。本发明说明书中使用的术语仅用于描述特定实施例,而并不旨在限制本发明。正如本发明说明书和所附权利要求中使用的,单数形式“一”、“一个”和“所述”旨在也包括复数形式,除非上下文清楚地指示其他含义。还应当理解,如本文所使用的术语“和/或”指代和包含所关联列出项中的一个或多个的任意和所有可能组合。进一步应当理解,本说明书中使用术语“包括“说明所述特征、整体、步骤、操作、元素和/或部件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元素、部件和/或其分组的存在或添加。正如本文使用的,术语“如果”可以根据上下文解释为“当......时”或
“一......就”或“响应于确定”或“响应于检测”。类似地,短语“如果确定”或“如果检测
到[声明的条件或事件]”可以根据上下文解释为“一确定......就”或“响应于确定”或
“一检测到(声明的条件或事件)就”或者“响应于检测到(声明的条件或事件)”。正如本文使用的,术语“事件”指的是由设备的一个或多个传感器检测到的输入。特别地,术语“事件”包括在触摸敏感表面上的触摸。一个事件包括一个或多个子事件。子事件通常是指对事件的变化(例如,触摸放下、触摸移动、触摸抬离可以是子事件)。一个 或多个子事件的序列中的子事件可以包括许多形式,包括但不限于,按下键、按键保持、释放按键、按下按钮、按下按钮保持、释放按钮、操纵杆移动、鼠标移动、按下鼠标按钮、释放鼠标按钮、触笔触摸、触笔移动、触笔释放、口头指令、检测到的眼睛移动、生物计量输入、检测到的用户生理变化以及其他。由于一个事件可能包括单个子事件(例如,设备的短横向运动),所以本文使用的术语“子事件”也指事件。正如本文使用的,术语“事件识别器”和“姿态识别器”可交换地用于指代可以识别姿态或其他事件(例如,设备的运动)的识别器。正如本文使用的,术语“事件处理器”和“姿态处理器”可交换地用于指代响应于对事件/子事件或姿态的识别而执行预定的一组操作(例如,更新数据、更新对象和/或更新显示)的处理器。如上所述,在具有触摸敏感表面作为输入设备的一些设备中,第一组基于触摸的姿态(例如,两个或更多个轻敲、双敲、水平挥击、垂直挥击)在特定的上下文中(例如,在第一应用程序的特定模式中)被识别为适合的输入,并且其他不同的基于触摸的姿态的组在其他上下文中(例如,不同的应用程序和/或第一应用程序内的不同模式或下上文)被识别为适合的输入。结果是,用于识别和响应于基于触摸的姿态所需的软件和逻辑可能变得复杂,并且在每次更新应用程序或者向计算设备添加新的应用程序时可能需要修正。本文描述的实施例通过提供用于处理事件和/或姿态输入的综合框架来解决这些问题。在下面描述的实施例中,基于触摸的姿态是事件。一识别到预定义的事件,例如与应用程序的当前上下文中的适合输入相对应的事件,就发送涉及该事件的信息到应用程序。进一步地,每个各自事件被定义为子事件序列。在具有多点触摸显示设备(本文通常称为“屏幕”)或其他多点触摸敏感表面并接受基于多点触摸的姿态的设备中,定义基于多点触摸事件的子事件可以包括多点触摸子事件(需要两个或更多个手指同时接触设备的触摸敏感表面)。例如,在具有多点触摸敏感显示器的设备中,当用户的手指首次触摸屏幕时可以开始各自子事件的多点触摸序列。当一个或多个另外的手指顺序地或同时地触摸屏幕时可以发生另外的子事件,而当触摸屏幕的所有手指跨屏幕移动时可以发生其他子事件。当用户的最后一个手指从屏幕抬离时序列结束。当使用基于触摸的姿态来控制运行在具有触摸敏感表面的设备中的应用程序时,触摸具有时间和空间两方面。时间方面,称为阶段,指示何时触摸开始、触摸是移动的还是静止的、以及何时触摸结束(即,何时手指从屏幕抬离)。触摸的空间方面是其上发生触摸的视图或用户界面窗口的集合。在其中检测到触摸的视图或窗口可以对应于程序或视图层次结构内的程序级别。例如,在其中检测到触摸的最低级别的视图可以称为点击视图,并且识别为适合输入的事件组可以至少部分地基于开始基于触摸的姿态的初始接触的点击视图而确定。可替代地或附加地,至少部分地基于程序层次结构中的一个或多个软件程序(即,软件应用程序)将事件识别为适合的输入。例如,五指捏姿态在具有五指捏姿态识别器的应用程序启动器中被识别为适合的输入,但是在不具有五指捏姿态识别器的网页浏览器应用程序中不能被识别为适当的输入。图1A-1C是例示了根据一些实施例的电子设备102的不同实施例的框图。电子设备102可以是任何电子设备,包括但不限于,台式机计算机系统、膝上型计算机系统、移动电话、智能电话、个人数字助理或者导航系统。电子设备102也可以是具有配置成给出用户界面的触摸屏显示器(例如,触摸敏感显示器156,图1B)的便携式电子设备、具有配置成给出用户界面的触摸屏显示器的计算机、具有配置成给出用户界面的触摸敏感表面和显示器的计算机以及任何其他形式的计算设备,包括但不限于,消费者电子设备、移动电话、视频游戏系统、电子音乐播放器、平板PC、电子书阅读系统、电子书、PDA、电子组织器、电子邮件设备、膝上型或其他计算机、计算机站(kiosk computer)、贩卖机、智能器件等等。电子设备102包括用户接口 113。
在一些实施例中,电子设备102包括触摸敏感显示器156 (图1B)。在这些实施例中,用户接口 113可以包括屏幕上键盘(未示出),用于由用户与电子设备102交互。在一些实施例中,电子设备102还包括一个或多个输入设备128 (例如,键盘、鼠标、轨迹球、麦克风、物理按钮、触摸板等等)。在一些实施例中,触摸敏感显示器156能够检测两个或更多个不同的、同时的(或部分同时的)触摸,并且在这些实施例中,显示器156在本文中有时称为多点触摸显不器或多点触摸敏感显不器。在一些实施例中,一个或多个输入设备128的键盘可以与电子设备102分开且不同。例如,键盘可以是耦接到电子设备102的有线或者无线键盘。在一些实施例中,电子设备102包括耦接到电子设备102的显示器126和一个或多个输入设备128 (例如,键盘、鼠标、轨迹球、麦克风、物理按钮、触摸板、轨迹板等等)。在这些实施例中,输入设备128中的一个或多个可以可选择地与电子设备102分开且不同。例如,一个或多个输入设备可以包括以下项中的一个或多个键盘、鼠标、轨迹板、轨迹球和电子笔,以上任意项可以可选择地与电子设备分开。可选择地,设备102可以包括一个或多个传感器116,例如,一个或多个加速计、陀螺仪、GPS系统、扬声器、红外(IR)传感器、生物计量传感器、照相机等等。应当注意,对作为输入设备128或作为传感器116的各种示例设备的以上描述对于本文描述的实施例的操作没有实质影响。并且本文中作为输入设备描述的任何输入或传感器设备可以很好地等同地作为传感器描述,反之亦然。在一些实施例中,由一个或多个传感器116产生的信号用作用于检测事件的输入源。在一些实施例中,电子设备102包括耦接到电子设备102的触摸敏感显示器156 ( S卩,具有触摸敏感表面的显示器)和一个或多个输入设备128 (图1B)。在一些实施例中,触摸敏感显示器156能够检测两个或更多个不同的同时的(或部分同时的)触摸,并且在这些实施例中,显示器156在本文中有时称为多点触摸显示器或多点触摸敏感显示器。在本文讨论的电子设备102的一些实施例中,输入设备128设置在电子设备102中。在其他实施例中,输入设备128中的一个或多个与电子设备102分开且不同。例如,输入设备128中的一个或多个可以通过线缆(例如,USB线缆)或无线连接(例如,蓝牙连接)耦接到电子设备102。当使用输入设备128时,或者当在电子设备102的触摸敏感显示器156上执行基于触摸的姿态时,用户产生由电子设备102的一个或多个CPU 110处理的子事件序列。在一些实施例中,电子设备102的一个或多个CPU 110处理子事件序列以识别事件。电子设备102通常包括一个或多个单核或多核处理单元(一个CPU或多个CPU) 110以及一个或多个网络或其他通信接口 112。电子设备102包括存储器111和用于在互连这些部件的一个或多个通信总线115。通信总线115可以包括互连和控制系统部件(本文未示出)之间的通信的电路(有时称为芯片组)。如上所述,电子设备102包括包含显示器(例如,显示器126或触摸敏感显示器156)的用户接口 113。进一步地,电子设备102通常包括输入设备128 (例如,键盘、鼠标、触摸敏感表面、键板等等)。在一些实施例中,输入设备128包括屏幕上输入设备(例如,显示器设备的触摸敏感表面)。存储器111可以包括高速随机存取存储器,诸如DRAM、SRAM、DDR RAM或其他随机存取固态存储器设备;并且可以包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪速存储器设备或其他非易失固态存储设备。存储器111可以可选地包括与CPU 110远程放置的一个或多个存储设备。存储器111或者是作为替代的存储器111中的非易失性存储器设备包括计算机可读存储介质。在一些实施例中,存储器111或者在存储器111中的非易失性存储器设备包括非暂态计算机可读存储介质。在一些实施例中,(电子设备102的)存储器111或者存储器111的计算机可读存储介质存储了以下的程序、模块和数据结构或其子集 操作系统118,包括用于处理备种基本系统服务和用于执行硬件依赖任务的过程; 辅助模块127 (图1C),用于修改在应用程序软件124中的一个或多个软件应用程序的行为,或者修改来自触摸敏感显示器156或者输入设备128的数据,以改进应用程序软件124中的一个或多个软件应用程序的易用性或其中所显示内容(例如,网页)的易用性(例如,对于视力受损的人或者行动能力受限的人); 通信模块120,用于经一个或多个各自的通信接口 112(有线或无线的)和诸如因特网、其他广域网、局域网、城域网等的一个或多个通信网络,连接电子设备102到其他设备; 用户界面模块123 (图1C),用于显示包括在显示器126或触摸敏感显示器156上的用户界面对象的用户界面; 控制应用程序132 (图1C),用于控制进程(例如,点击视图确定、线程管理和/或事件监控等等);在一些实施例中,控制应用程序132包括正在运行的应用程序;在其他实施例中,正在运行的应用程序包括控制应用程序132 ; 事件传送系统122,可以在操作系统118中或在应用程序软件124中以各种可替换的实施例实现;然而在一些实施例中,事件传送系统122的一些方面可以在操作系统118、中实现,而其他方面在应用程序软件124中实现; 应用程序软件124,包括一个或多个软件应用程序(例如,图IC中的应用程序133-1,133-2和133-3,其中的每个可以是以下之一电子邮件应用程序、网页浏览器应用程序、记事本应用程序、文本消息通讯应用程序等等);各自的软件应用程序至少在执行期间通常具有指示各自软件应用程序及其部件(例如,姿态识别器)的状态的应用程序状态;参见下面描述的应用程序内部状态321(图3D);以及 设备/全局内部状态134 (图1C),包括以下项中的一个或多个应用程序状态,指示软件应用程序及其部件(例如姿态识别器和代表)的状态;显示器状态,指示占用触摸敏感显示器156或显示器126的各个区域的是什么应用程序、视图或其他信息;传感器状态,包括从没备的各个传感器116、输入设备128和/或触摸敏感显示器156获得的信息;位置信息,涉及设备的位置和/或方位;以及其他状态。正如在说明书和权利要求书中使用的,术语“打开的应用程序”是指具有保留的状态信息(例如,作为设备/全局内部状态134和/或应用程序内部状态321 (图3D)的一部分)的软件应用程序。一个打开的应用程序是以下类型的应用程序之一 活动应用程序,其当前显示在显示器126或触摸敏感显示器156上(或者对应的应用程序视图当前显示在显示器上); 后台应用程序(或后台进程),其当前不显示在显示器126或触摸敏感显示器 156上,但是用于对应应用程序的一个或多个应用程序进程(例如,指令)正在由一个或多个处理器110进行处理(例如,运行); 挂起的应用程序,其当前没有在运行,并且该应用程序存储在易失性存储器(例如,DRAM、SRAM、DDR RAM或存储器111的其他易失性随机存取固态存储器设备)中;以及 休眠的应用程序,其当前没有在运行,并且该应用程序存储在非易失性存储器中(例如,一个或多个磁盘存储设备、光盘存储设备、闪速存储器设备或存储器111的其他非易失性固态存储设备)。正如本文使用的,术语“关闭的应用程序”是指不具有保留的状态信息的软件应用程序(例如,关闭的应用程序的状态信息没有存储在设备的存储器中)。相应地,关闭应用程序包括停止和/或移除应用程序的应用程序进程以及将应用程序的状态信息从设备的存储器移除。一般来说,当处于第一应用程序中时打开第二应用程序不会关闭第一应用程序。当第一应用程序停止显示而第二应用程序显示的时候,曾在显示时为活动应用程序的第一应用程序可以变成后台应用程序、挂起的应用程序或者休眠的应用程序,但是当由设备保留其状态信息时,第一应用程序仍然是打开的应用程序。上述所认定元素中的每个都可以存储在前面提到的存储器设备中的一个或多个中。上述所认定模块、应用程序或系统元素中的每一个对应于一组用于执行本文所述功能的指令。该组指令可以由一个或多个处理器(例如,一个或多个CPU 110)执行。上述所认定模块或程序(即,指令组)不需要作为单独的软件程序、过程或模块来实现,于是在各个实施例中,各种这些模块的子集可以组合或者以其他方式重新排列。在一些实施例中,存储器111可以存储以上认定的模块和数据结构的子集。进一步地,存储器111可以存储上面没有描述的另外的模块和数据结构。图2是根据本发明一些实施例的示例电子设备或装置(例如,设备102)的输入/输出处理栈200的图。设备的硬件(例如,电子电路)212在输入/输出处理栈200的基础层。硬件212可以包括各种硬件接口部件,诸如在图IA和/或IB中描述的部件。硬件212还可以包括上述传感器116中的一个或多个。输入/输出处理栈200的其他兀素(202-210)中的至少一些是软件过程或部分的软件过程,其处理从硬件212接收的输入并生成通过硬件用户接口(例如,显示器、扬声器、设备振动致动器等中的一个或多个)给出的各种输出。
一个驱动器或一组驱动器210与硬件212通信。驱动器210可以接收和处理从硬件212接收的输入数据。核心操作系统(OS) 208可以和驱动器210通信。核心OS 208可以处理从驱动器210接收的原始输入数据。在一些实施例中,驱动器210可以看作是核心OS 208的一部分。一组OS应用程序编程接口( “0SAPI,,) 206是与核心OS 208通信的软件过程。在一些实施例中,API 206包括在设备的操作系统中,但是处于核心0S208以上的层。API206为由本文讨论的在电子设备或装置上运行的应用程序使用而设计。用户界面(UI)API 204可以使用OSAPI 206。设备上运行的应用程序软件(“应用程序”)202可以使用MAPI 204以便和用户通信。WAPI 204可以继而和更低层的元素通信,从而最终和各种用户接口硬件(例如,多点触摸显示器156)通信。在一些实施例中,应用程序软件202包括在应用程序软件124 (图1A)中的应用程序。
尽管输入/输出处理栈200的每个层都可以使用其下面一层,但却不总是需要的。例如,在一些实施例中,应用程序202可以直接地与OS API 206通信。一般地,在OSAPI层206处或之上的层不可以直接地访问核心OS 208、驱动器210或硬件212,因为这些层被看成是私有的。在层202和MAPI204中的应用程序通常直接调用0SAPI206,0SAPI206继而访问核心OS 208、驱动器210和硬件212这些层。换句话说,电子设备102的一个或更多个硬件元素212和在该设备上动行的软件,检测在一个或多个输入设备128和/或触摸敏感显示器156处的输入事件(该输入事件可以对应于姿态中的子事件),并生成或更新(存储在设备102的存储器111中的)各种数据结构,该数据结构由当前的活动事件识别器组使用以确定该输入事件是否以及何时对应于要被发送到应用程序124的事件。下面将更详细地描述事件识别方法、装置和计算机程序产品的实施例。图3A描述了示例视图层次结构300,该视图层次结构300在这个例子中是显示在最外视图302中的搜索程序。最外视图302 —般包括用户可以直接与之交互的整个用户界面,并且包括从属视图,例如, 搜索结果面板304,其将搜索结果分组并可以垂直滚动; 搜索字段306,其接受文本输入;以及 始位行310,其将应用程序分组以便快速访问。在这个例子中,每个从属视图包括更低级别的从属视图。在其他例子中,在层次结构300中的视图级别的数目在层次结构的不同分支可以不同,其中一个或多个从属视图具有更低级别的从属视图以及一个或多个其他从属视图不具有任何这样的更低级别的从属视图。继续图3A中所示的例子,对于每个搜索结果,搜索结果面板304包含单独的从属视图305 (从属于面板304)。在此,该示例示出在称为地图视图305的从属视图中的一个搜索结果。搜索字段306包括本文称为清除内容图标视图307的从属视图,当用户在视图307中的清除内容图标上执行特定动作(例如,单点触摸或者轻敲姿态)时,视图307清除搜索字段的内容。始位行310包括从属视图310-1、310-2、310-3和3104,这些从属视图分别对应于联系人应用程序、电子邮件应用程序、网页浏览器和iPod音乐接口。触摸子事件301-1在最外视图302中表示。给定触摸子事件301_1位于搜索结果面板304和地图视图305两者之上,触摸子事件也会在搜索结果面板304和地图视图305之上分别表示为301-2和301-3。触摸子事件的有效涉及的视图包括视图搜索结果面板304、地图视图305和最外视图302。下面将参考图3B和3C提供关于子事件传送和有效涉及的视图的附加信息。视图(以及对应的程序级别)可以嵌套。换句话,一个视图可以包括其他视图。因此,与第一视图相关联的软件元素(例如,事件识别器)可以包括或链接到与第一视图中的视图相关联的一个或多个软件元素。尽管一些视图可以与应用程序相关联,但另一些视图可以与高级别OS元素(例如,图形用户界面、窗口管理器等等)相关联。在一些实施例中,一些视图与其他OS元素相关联。在一些实施例中,视图层次结构包括来自多个软件应用程序的视图。例如,视图层次结构可以包括来自应用程序启动器的视图(例如,始位画面)和来自网页浏览器应用程序的视图(例如,包括网页内容的视图)。程序层次结构包括层次结构中的一个或多个软件元素或软件应用程序。为了简化随后的讨论,一般地将仅仅提及视图和视图层次结构,但是必须理解,在一些实施例中,该 方法可以用具有多个程序层的程序层次结构和/或视图层次结构来工作。图3B和3C描述了与事件识别器相关的示例方法和结构。图3B描述了当事件处理器与视图层次结构中的特定视图关联时事件处理的方法和数据结构。图3C描述了当事件处理器关联到与程序级别的层次结构中的特定级别时用于事件处理的方法和数据结构。事件识别器全局方法312和350分别包括点击视图和点击级别确定模块314和352、活动事件识别器确定模块316和354以及子事件传送模块318和356。在一些实施例中,电子设备102包括以下中的一个或多个事件识别器全局方法312和350。在一些实施例中,电子设备102包括以下中的一个或多个点击视图确定模块314和点击级别确定模块352。在一些实施例中,电子设备102包括以下中的一个或多个活动事件识别器确定模块316和354。在一些实施例中,电子设备102包括以下中的一个或多个子事件传送模块318和356。在一些实施例中,这些方法或模块中的一个或多个包括在更少或更多的方法或模块中。例如,在一些实施例中,电子设备102包括的点击视图/级别确定模块包含了点击视图确定模块314和点击级别确定模块352的功能性。在一些实施例中,电子设备102包括的活动事件识别器确定模块包括了活动事件识别器确定模块316和354的功能性。点击视图和点击级别确定模块314和352分别提供软件程序,用于在一个或多个视图(例如,图3A中描述的具有3个主分支的示例视图层次结构300)和/或与子事件对应的程序层次结构中一个或多个软件元素(例如,图IC中的应用程序133中的一个或多个)中,确定哪里发生了子事件。图3B中的点击视图确定模块314接收与子事件(例如,在最外视图302上表示为301-1、在搜索结果(地图视图305)上、在搜索结果面板304上的用户触摸)相关的信息。点击视图确定模块314认定点击视图为应该处理该子事件的层次结构中的最低视图。大多数情况下,点击视图是发生初始子事件(即,形成事件或潜在事件的子事件序列中的第一个子事件)的最低级别视图。在一些实施例中,一旦认定了点击视图,该点击视图将接收与点击视图认定的相同触摸或输入源相关的所有子事件。在一些实施例中,一个或多个其他视图(例如,默认或预定义视图)至少接收该点击视图接收的子事件中的一些子事件。在一些实施例中,图3C的点击级别确认模块352可以使用类似的处理。例如,在一些实施例中,点击级别确认模块352识别点击级别为应该处理该子事件的程序层次结构的最低级别(或程序层次结构中最低程序级别中的软件应用程序)。在一些实施例中,一旦认定了点击级别,该点击级别或者该点击级别中的软件应用程序将接收与点击级别认定的相同触摸或输入源相关的所有子事件。在一些实施例中,一个或多个其他级别或软件应用程序(例如,默认或预定义软件应用程序)至少接收该点击视图接收的子事件中的一些子事件。事件识别器全局方法312和350的活动事件识别器确定模块316和354,分别确定在视图层次结构和/或程序层次结构中的哪个或哪些视图应该接收特定的子事件序列。图3A描述了接收子事件301的一组示例活动视图302、304和305。在图3A的例子中,活动事件识别器确定模块316将确定最外视图302、搜索结果面板304和地图视图305是有效涉及的视图,因为这些视图包括了由子事件301代表的触摸的物理位置。应当注意,即使触摸子 事件301全部限制在与地图视图305相关联的区域内,搜索结果面板304和最外视图302将仍然保持为有效涉及的视图,因为搜索结果面板304和最外视图302是地图视图305的先辈。在一些实施例中,活动事件识别器确定模块316和354使用类似的处理。在图3A的例子中,活动事件识别器确定模块350将确定地图应用程序是有效涉及的,因为地图应用程序的视图被显示并且/或者地图应用程序的视图包括了由子事件301代表的触摸的物理位置。应当注意,即使触摸子事件301全部限制在与地图应用程序相关联的区域内,程序层次结构中的其他应用程序将仍然保持为有效涉及的应用程序(或有效涉及的程序级别中的应用程序)。子事件传送模块318传送子事件到用于有效涉及的视图的事件识别器。使用图3A中的例子,一个用户的触摸在层次结构的不同视图中由触摸标记301 -1、301 -2和301 -3表示。在一些实施例中,表示这种用户的触摸的子事件数据由子事件传送模块318传送到在有效涉及的视图处的事件识别器,即,顶级视图302、搜索结果面板304和地图视图305。进一步地,视图的事件识别器可以接收在该视图中开始的事件的子事件序列(例如,当在视图中发生初始子事件时)。换句话说,视图可以接收在该视图中开始的与用户交互相关联的子事件,即使它在该视图的外部继续。在一些实施例中,子事件传送模块356在类似于由子事件传送模块318使用的处理中传送子事件到用于有效涉及的程序级别的事件识别器。例如,子事件传送模块356传送子事件到用于有效涉及的应用程序的事件识别器。使用图3A的例子,用户的触摸301由子事件传送模块356传送到在有效涉及的视图(例如,地图应用程序和程序层次结构中的任何其他有效涉及的应用程序)处的事件识别器。在一些实施例中,程序层次结构中默认包括了默认或预定义软件应用程序。在一些实施例中,对于每个有效涉及的事件识别器,单独的事件识别器结构320或360产生并存储在设备的存储器中。事件识别器结构320和360通常分别包括事件识别器状态334、374(下面参考图4A和4B更详细地讨论),和分别具有状态机340、380的事件识别器特定码338、378。事件识别器结构320还包括视图层次结构参考336,而事件识别器结构360包括程序层次结构参考376。特定事件识别器的每个实例恰好参考了一个视图或程序级别。视图层次结构参考336或程序层次结构参考376 (对于一个特定事件识别器)用于确立哪个视图或程序级别逻辑地耦合到各自的事件识别器。视图元数据341和级别元数据381可以分别包括关于视图或级别的数据。视图或级别元数据可以至少包括以下可能影响到事件识别器的子事件传送的特性 停止特性342、382,其在被设置用于视图或程序级别时,阻止子事件传送到与该视图或程序级别以及视图或程序层次结构中的该视图或程序级别的先辈相关联的事件识别器。 跳过特性343、383,其在被设置用于视图或程序级别时,阻止子事件传送到与该视图或程序级别相关联的事件识别器,但是允许子事件传送到视图或程序层次结构中的该视图或程序级别的先辈。 非点击跳过特性344、384,其在被设置用于视图时,阻止子事件传送到与该视图相关联的事件识别器,除非该视图是点击视图。如上所述,点击视图确定模块314认定点击视图(或在点击级别确定模块352的情况下是点击级别)为应该处理子事件的层次结构中 的最低视图。事件识别器结构320和360可以分别包括元数据322、362。在一些实施例中,元数据322、362包括指示事件传送系统应该如何执行到有效涉及的事件识别器的子事件传送的可配置的特性、标志和列表。在一些实施例中,元数据322、362可以包括指示事件识别器如何可以彼此交互的可配置的特性、标志和列表。在一些实施例中,元数据322、362可以包括指示子事件是否传送到视图或程序层次结构中的变化的级别的可配置的特性、标志和列表。在一些实施例中,事件识别器元数据322、362的组合以及视图或级别元数据(分别是341、381) 二者都用于配置事件传送系统以a)执行到有效涉及的事件识别器的子事件传送,b)指示事件识别器可以如何彼此交互,以及c)指示子事件是否以及何时传送到视图或程序层次结构的不同级别。应当注意,在一些实施例中,按照事件识别器的结构320、360的字段所规定的,各自的事件识别器发送事件识别动作333、373到其各自的目标335、375。发送动作到目标与发送(以及延迟发送)子事件到各自的点击视图或级别是不同的。存储在对应的事件识别器的各自事件识别器结构320、360中的元数据特性包括以下中的一个或多个 排他标志324、364,其在被设置用于事件识别器时,指示一旦由事件识别器识别到一个事件,事件传送系统应该停止传送子事件到有效涉及的视图或程序级别的任何其他事件识别器(例外的是在例外列表326、366中列出的任何其他事件识别器)。当子事件的接收引起特定事件识别器进入如由其对应的排他标志324或364所指示的排他状态时,接下来的子事件仅仅被传送到在排他状态中的事件识别器(以及在例外列表326、366中列出的任何其他事件识别器)。
一些事件识别器结构320、360,其可以包括排他例外列表326、366。当被包括在事件识别器结构320、360中用于各自的事件识别器时,如果有事件识别器组的话,列表326,366指示事件识别器组即使在各自的事件识别器已经进入排他状态之后也继续接收子事件。例如,如果单敲事件的事件识别器进入排他状态,并且目前涉及的视图包括双敲事件的事件识别器,那么列表320、360将列出双敲事件识别器,以便即使在检测到单敲事件之后仍可识别双敲事件。相应地,排他例外列表326、366允许事件识别器识别共享共用的子事件序列的不同的事件,例如,单敲事件识别不排除随后由其他事件识别器识别的双敲或三次轻敲事件。
一些事件识别器结构320、360,其可以包括等待列表327、367。其在被包括在事件识别器结构320、360中用于各自的事件识别器时,如果有事件识别器组的话,这种列表327,367指示事件识别器组必须在各自的事件识别器可以识别各自的事件之前进入事件不可能或事件取消状态。实际上,所列出的事件识别器比具有等特列表327、367的事件识别器具有用于识别事件的更高优先级。 延迟触摸开始标志328、368,其在被设置用于事件识别器时,引起该事件识别器延迟发送子事件(包括触摸开始或手指放下子事件以及随后的事件)到事件识别器的各自点击视图或级别,直到已经确定该子事件序列不对应于这个事件识别器的事件类型。这个标志可以用于在姿态被识别的情况下使点击视图或级别在任何时候都不会看见任何子事 件。当事件识别器识别事件失败时,触摸开始子事件(以及随后的触摸结束子事件)可以被传送到点击视图或级别。在一个例子中,传送这样的子事件到点击视图或级别使得用户 界面简明地突出显示一个对象,而不调用与该对象相关联的动作 延迟触摸结束标志330、370,其在被设置用于事件识别器时,引起事件识别器延迟发送子事件(例如,触摸结束子事件)到事件识别器的各自点击视图或级别,直到已经确定该子事件序列不对应于这个事件识别器的事件类型。这可以用于在姿态稍后被识别的情况下阻止点击视图或级别根据触摸结束子事件而进行动作。只更触摸结束子事件没有发送,触摸取消就可以发送到点击视图或级别。如果识别了事件,则对应的动作由应用程序执行,并且触摸结束子事件传送到点击视图或级别。 触摸取消标志332、372,其在被设置用于事件识别器时,如果已经确定子事件序列不对应于这个事件识别器的事件类型,则引起事件识别器发送触摸或输入取消到事件识别器的各自点击视图或级别。发送到点击视图或级别的触摸或输入取消指示先有的子事件(例如,触摸开始子事件)已经被取消。触摸或输入取消可以引起输入源处理器的状态(见图4B)进入辅入序列取消状态460 (下面所讨论的)。在一些实施例中,例外列表326、366还可以由非排他事件识别器使用。尤其是,当非排他事件识别器识别事件时,随后的子事件不被发送到与当前活动视图相关联的排他事件识别器,在识别该事件的事件识别器的例外列表326、366中所列出的那些排他事件识别器除外。在一些实施例中,事件识别器可以配置成,结合延迟触摸结束标志使用触摸取消标志以阻止不想要的子事件传送到点击视图。例如,单敲姿态的定义和双敲姿态的前半部分的定义是同样的。一旦单敲事件识别器成功地识别了单敲,一个不想要的动作就可能发生。如果设置了延迟触摸结束标志,单敲事件识别器被阻止发送子事件到点击视图,直到识别了一个单敲事件。另外,单敲事件识别器的等待列表可以认定双敲事件识别器,从而阻止单敲事件识别器识别单敲,直到双敲事件识别器已经进入事件不可能状态。等待列表的使用避免了当执行双敲姿态时与单敲相关联的动作的执行。替代地,响应于对双敲事件的识别,只有与双敲相关联的动作才将被执行。转而具体说到在触摸敏感表面上的用户触摸的形式,如上所述,触摸和用户姿态可以包括不必是瞬间的动作,例如,触摸可以包括在一段时间内在显示器上移动或保持手指的动作。然而,触摸数据结构定义了在特定时间的触摸的状态(或者,更一般地,任何输入源的状态)。因此,存储在触摸数据结构中的值在单点触摸的过程中可能改变,从而在不同的时间点使得能够将单点触摸的状态传输到应用程序。每个触摸数据结构可以包括不同的字段。在一些实施例中,触摸数据结构可以包括对应于至少图3B中的触摸特定字段339或图3C中的输入源特定字段379的数据。例如,图3B中的“用于视图的第一触摸”字段345(图3C中的“用于级别的第一触摸”字段385)可以指示触摸数据结构是否定义了用于特定视图的第一触摸(由于实现视图的软件元素是实例化的)。“时间戳”字段346、386可以指示触摸数据结构相关的具体时间。
可选地,“信息”字段347、387可以用于指示触摸是否是基本姿态。例如,“信息”字段347、387可以指示触摸是否是挥击,并且如果是,挥击朝向哪个方向。挥击是一个或多个手指沿直线方向的快速拖拽。API实现(下面讨论)可以确定触摸是否是挥击并通过“信息”字段347、387传递该信息到应用程序,从而在触摸是挥击的情况下可以减轻原本必要的应用程序的一些数据处理。可选地,图3B中的“轻敲计数”字段348 (图3C中的“事件计数”字段388)可以指示在初始触摸的位置有多少轻敲已经连续地执行。一个轻敲可以定义为在特定位置在触摸敏感面板上快速按下并抬离手指。如果手指以快速的相继方式又在该面板的相同位置按下并释放,则可以发生多个连续的轻敲。事件传送系统122可以对轻敲进行计数,并且通过“轻敲计数”字段348转送这个信息到应用程序。在相同位置的多次轻敲有时被认为是有用且容易的,以记录用于触摸使能接口的命令。于是,通过对轻敲进行计数,事件传送系统122又可以减轻来自应用程序的一些数据处理。“阶段”字段349、389可以指示基于触摸的姿态当前处于的特定阶段。阶段字段349、389可以具有各种值,诸如“触摸阶段开始”指示触摸数据结构定义了先前的触摸数据结构尚未参考过的新的触摸。“触摸阶段移动”值可以指示正在被定义的触摸从先前的位置已经进行了移动。“触摸阶段静止”值可以指示触摸已经停留在相同的位置。“触摸阶段结束”值可以指示触摸已经结束(例如,用户已经从多点触摸显示器的表面抬离了他/她的手指)。“触摸阶段取消”值可以指示该触摸已经被设备取消。取消的触摸可以是不必由用户结束但是设备已经决定要忽略的触摸。例如,设备可以确定该触摸是无心产生的(即,作为将便携式多点触摸使能设备放置在某人的口袋里的结果),并因此而忽略该触摸。“阶段”字段349、389的每个值都可以是一个整数。因此,每个触摸数据结构可以定义在具体的时间对于各自的触摸(或其他输入源)正在发生什么(例如,该触摸是否静止、正在被移动等等)以及与该触摸相关联的其他信息(比如位置)。相应地,每个触摸数据结构可以定义在特定时间点的特定触摸的状态。参考相同时间的一个或多个触摸数据结构可以加入到可以定义特定视图在一个时刻接收的所有触摸的状态的触摸事件数据结构中(如上所述,一些触摸数据结构还可以参考已经结束且不再被接收的触摸)。随时间推移,为了给软件提供描述视图中正在发生的触摸的连续信息,多点触摸事件数据结构可以发送到实现视图的软件。图3D是例示了根据一些实施例的用于事件处理的示例部件(例如,事件处理部件390)的框图。在一些实施例中,存储器111 (图1A)包括事件识别器全局方法312和一个或多个应用程序(例如,133-1到133-3)。在一些实施例中,事件识别器全局方法312包括事件监控器311、点击视图确定模块314、活动事件识别器确定模块316和事件调度模块315。在一些实施例中,事件识别器全局方法312位于事件传送系统122 (图1A)中。在一些实施例中,事件识别器全局方法312在操作系统118 (图1A)中实现。作为替代,事件识别器全局方法312在各自的应用程序133-1中实现。在还有另一个实施例中,事件识别器全局方法312作为单立模块实现,或者作为存储在存储器111中的另一个模块(例如,接触/运动模块(未示出))的一部分实现。事件监控器311接收来自一个或多个传感器116、触摸敏感显示器156和/或一个或多个输入设备128的事件信息。事件信息包括关于事件(例如,在触摸敏感显示器156上的用户触摸,作为多点触摸姿态或设备102的运动的一部分)和/或子事件(例如,跨触摸敏感显示器156的触摸的移动)的信息。例如,触摸事件的事件信息包括以下中的一个或多个触摸的位置和时间戳。类似地,挥击事件的事件信息包括以下中的两个或更多个挥 击的位置、时间戳、方向和速度。传感器116、触摸敏感显示器156和输入设备128直接地或通过检索和存储事件信息的外围设备接口发送信息事件和子事件信息到事件监控器311。传感器116包括以下中的一个或多个接近传感器、加速计、陀螺仪、麦克风和摄影机。在一些实施例中,传感器116还包括输入设备128和/或触摸敏感显示器156。在一些实施例中,事件监控器311以预定的间隔发送请求到传感器116和/或外围设备接口。作为响应,传感器116和/或外围设备接口发送事件信息。在其他实施例中,仅仅在有重大事件时(例如,接收的输入超出了预定噪音阈值和/或超出预定持续时间),传感器116和/或外围设备接口才发送事件信息。事件监控器311接收事件信息并转发事件信息到事件调度器模块315。在一些实施例中,事件监控器311确定事件信息要传送到的一个或多个各自的应用程序(例如,133-1)。在一些实施例中,事件监控器311还确定事件信息要传送到的一个或多个各自的应用程序的一个或多个各自的应用程序视图317。在一些应用程序中,事件识别器全局方法312还包括点击视图确定模块314和/或活动事件识别器确定模块316。如果存在点击视图确定模块314,则当触摸敏感显示器156显示多于一个视图时,点击视图确定模块314提供用于在一个或多个视图中确定哪里发生了事件或子事件的软件程序。视图由用户可以在显示器上看见的控件或其它元素组成。与各自的应用程序(例如,133-1)相关联的用户界面的另一方面是一组视图317,本文中有时称为应用程序视图或用户界面窗口,在其中显示信息并发生基于触摸的姿态。在其中检测到触摸的(各自的应用程序的)应用程序视图可以对应于该应用程序的视图层次结构中的特定的视图。例如,在其中检测到触摸的最低级视图可以称为点击视图,并且识别为适合的输入的事件钮可以至少部分地基于开始基于触摸的姿态的初始触摸的点击视图确定。点击视图确定模块314接收与事件和/或子事件相关的信息。当应用程序具有在层次结构中组织的多个视图时,点击视图确定模块314认定点击视图为应该处理该事件或子事件的层次结构中的最低视图。在大多数情况下,点击视图是其中发生了初始事件或子事件(即,形成姿态的事件和/或子事件的序列中的第一事件或子事件)的最低级视图。一旦由点击视图确定模块认定了点击视图,则该点击视图通常接收与被认定为点击视图的相同触摸或输入源相关的所有事件和/或子事件。然而,点击视图不总是接收与被认定为点击视图的相同触摸或输入源相关的所有事件和/或子事件的唯一视图。换句话说,在一些实施例中,另一个应用程序(例如,133-2)或者相同应用程序的另一个视图也至少接收与该相同触摸或输入源相关的事件和/或子事件的子集,而不考虑对于该触摸或输入源是否已经确定了点击视图。活动事件识别器确定模块316在视图层次结构中确定哪个或哪些视图应该接收特定的事件和/或子事件序列。在一些应用程序上下文中,活动事件识别器确定模块316确定只有点击视图应该接收特定的事件和/或子事件序列。在其他应用程序上下文中,活动事件识别器确定模块316确定包括事件或子事件物理位置的所有视图都是有效涉及的视图,并因此确定所有有效涉及的视图应该接收特定的事件和/或子事件序列。在其他应用程序上下文中,即使触摸事件和/或子事件全部限制在与一个特定视图相关联的区域内,层次结构中的更高级别的视图也仍然保持为有效涉及的视图,因此层次结构中的更高级别的视图应该接收特定的事件和/或子事件序列。附加地或作为替代地,活动事件识别器确定模块316在程序层次结构中确定哪个或哪些应用程序应该接收特定的事件和/或子事件序列。因此,在一些实施例中,活动事件识别器确定模块316确定只有程序层次结构中的各自的应用程序才应该接收特定的事件和/或子事件序列。在一些实施例中,活动事件识别器确定模块316确定程序层次结构中的多个应用程序应该接收特定的事件和/或子事件序列。事件调度器模块315调度事件信息到事件识别器(本文中也称为“姿态识别器”)(例如,事件识别器325-1)。在包括活动事件识别器确定模块316的实施例中,事件调度器模块315传送事件信息到由活动事件识别器确定模块316确定的事件识别器。在一些实施例中,事件调度器模块315将由各自的事件识别器325 (或者由在各自的事件识别器325中的事件接收器3031)检索的事件信息存储在事件队列中。在一些实施例中,各自的应用程序(例如,133-1)包括应用程序内部状态321,其中应用程序内部状态321指示在应用程序是活动的或正在执行时显示在触摸敏感显示器156上的当前应用程序视图。在一些实施例中,设备/全局内部状态134 (图1C)由事件识别器全局方法312用于确定当前哪个或哪些应用程序是活动的,并且应用程序内部状态321由事件识别器全局方法312用于确定事件信息要传送到的应用程序视图317。在一些实施例中,应用程序内部状态321包括附加信息,例如以下中的一个或多个当应用程序133-1恢复执行时要使用的恢复信息;用户界面状态信息,其指示由应用程序133-1正在显示或准备显示的信息;状态队列,用于使得用户能够回退到应用程序133-1的先前状态或视图;以及由用户执行的先前动作的重做/撤销队列。在一些实施例中,应用程序内部状态321进一步包括上下文信息/文本和元数据323。在一些实施例中,应用程序133-1包括一个或多个应用程序视图317,其中的每个都具有对应的指令用于处理发生在应用程序的用户界面的特定视图内的触摸事件(例如,对应的事件处理器319)。应用程序133-1的至少一个应用程序视图317包括一个或多个事件识别器325。通常,各自的应用程序视图317包括多个事件识别器325。在其他实施例、中,事件识别器325中的一个或多个是单独模块的一部分,诸如用户界面套件(未示出)或更高级对象,其中应用程序133-1从其继承了方法或其它特性。在一些实施例中,各自的应用程序视图317还包括以下中的一个或多个数据更新器、对象更新器、GUl更新器和/或接收的事件数据。各自的应用程序(例如,133-1)还包括一个或多个事件处理器319。通常,各自的应用程序(例如,133-1)包括多个事件处理器319。各自的事件识别器325-1接收来自事件调度器模块315 (直接地或间接地通过应用程序133-1)的事件信息并从事件信息识别事件。事件识别器325-1包括事件接收器3031和事件比较器3033。事件信息包括关于事件(例如,触摸)或子事件(例如,触摸移动)的信息。根据事件或子事件,事件信息还包括附加信息,诸如事件或子事件的位置。当事件或子事件涉及触摸的运动时,事件信息还可以包括子事件的速度和方向。在一些实施例中,事件包括设备 从一个朝向到另一个的旋转(例如,从纵向朝向到横向朝向,或反过来),并且事件信息包括关于设备的当前朝向(也称为设备方位)的对应信息。事件比较器3033将事件信息和一个或多个预定义的姿态定义(本文中也称为“事件定义”)比较,并且基于该比较确定事件或子事件,或者确定或更新事件或子事件的状态。在一些实施例中,事件比较器3033包括一个或多个姿态定义3035(如上所述,本文中也称为“事件定义”)。姿态定义3035包含姿态的定义(例如,预定义的事件和/或子事件序列),例如,姿态I (3037-1)、姿态2(3037-2)以及其他。在一些实施例中,姿态定义3035中的子事件包括,例如,触摸开始、触摸结束、触摸移动、触摸取消以及多点触摸。在一个示例中,姿态I (3037-1)的定义是在显示的对象上双敲。例如,双敲包括在该姿态的预定阶段内在显示的对象上的第一触摸(触摸开始)、在该姿态的下一个预定阶段内的第一抬离(触摸结束)、在该姿态的随后的预定阶段内在显示的对象上的第二触摸(触摸开始)以及在该姿态的最终预定阶段内的第二抬离(触摸结束)。在另一个示例中,姿态2(3037-2)的定义包括在显示的对象上的拖拽。例如,拖拽包括在显示的对象上触摸(或接触)、跨触摸敏感显示器156的触摸的移动以及触摸的抬离(触摸结束)。在一些实施例中,事件识别器325-1还包括用于事件传送3039的信息。用于事件传送3039的信息包括对对应的事件处理器319的参考。可选地,用于事件传送3039的信息包括动作-目标对。在一些实施例中,响应于识别姿态(或姿态的一部分),事件信息(例如,动作消息)被发送到由动作-目标对认定的一个或多个目标。在其他实施例中,响应于识别姿态(或姿态的一部分),激活动作-目标对。在一些实施例中,姿态定义3035包括对于各自的用户界面对象的姿态的定义。在一些实施例中,事件比较器3033执行点击测试以确定哪一个用户界面对象与子事件相关联。例如,在触摸敏感显示器156上显示了三个用户界面对象的应用程序视图中,当在触摸敏感显示器156上检测到触摸时,事件比较器3033执行点击测试,以确定如果有的话则三个用户界面对象中的哪个与该触摸(事件)相关联。如果每个显示的对象都与各自的事件处理器319相关联,那么事件比较器3033使用点击测试的结果来确定哪个事件处理器319应该被激活。例如,事件比较器3033选择与该事件以及触发点击测试的对象相关联的事件处理器319。
在一些实施例中,对于各自的姿态的各自的姿态定义3037还包括延迟的动作,该延迟的动作延迟事件信息的传送直到已经确定事件和/或子事件序列对应于或不对应于事件识别器的事件类型。当各自的事件识别器325-1确定事件和/或子事件序列不匹配于姿态定义3035中的任何事件时,各自的事件识别器325-1进入事件失败状态,在此之后各自的事件识别器325-1不考虑基于触摸的姿态的随后的事件和/或子事件。在这种情况下,如果有的话,对于点击视图保持活动的其他事件识别器继续跟踪和处理正在进行的基于触摸的姿态的事件和/或子事件。在一些实施例中,当对于点击视图没有事件识别器保留时,事件信息发送到视图层次结构中的更高的视图中的一个或多个事件识别器。作为代替地,当对于点击视图没有事件识别器保留时,忽略该事件信息。在一些实施例中,当对于视图层次结构中的视图没有事件识别器保留时,事件信息发送到程序层次结构中的更高的程序级别中的一个或多个事件识别器。作为代替地,当对于视图层次结构中的视图没有事件识别器保留时,忽略该事件信息。 在一些实施例中,各自的事件识别器325-1包括事件识别器状态334。事件识别器状态334包括各自的事件识别器325-1的状态。事件识别器状态的例子下面将参考图4A-4B以及5A-5C更详细地描述。在一些实施例中,事件识别器状态334包括识别器元数据和特性3043。在一些实施例中,识别器元数据和特性3043包括以下中的一个或多个A)指示事件传送系统应该如何执行到有效涉及的事件识别器的事件和/或子事件的传送的可配置的特性、标志和/或列表;B)指示事件识别器如何彼此交互的可配置的特性、标志和/或列表;C)指示事件识别器如何接收事件信息的可配置的特性、标志和/或列表;D)指示事件识别器如何可以识别姿态的可配置的特性、标志和/或列表;E)指示事件和/或子事件是否传送到视图层次结构中的变化的级别的可配置的特性、标志和/或列表;以及F)对对应的事件处理器319的参考。在一些实施例中,事件识别器状态334包括事件/触摸元数据3045。事件/触摸元数据3045包括关于已经检测到的且对应于姿态定义3035的各自的姿态定义3037的各自的事件/触摸的事件/触摸信息。事件/触摸信息包括以下中的一个或多个各自的事件/触摸的位置、时间戳、速度、方向、距离、范围(或范围变化)以及角度(或角度变化)。在一些实施例中,当识别了姿态的一个或多个特定事件和/或子事件时,各自的事件识别器325激活与各自的事件识别器325相关联的事件处理器319。在一些实施例中,各自的事件识别器325传送与事件相关联的事件信息到事件处理器319。事件处理器319在被激活时执行以下中的一个或多个创建和/或更新数据、创建和更新对象、以及准备显示信息并发送该显示信息用以在显示器126或触摸敏感显示器156上显示。在一些实施例中,各自的应用程序视图317-2包括视图元数据341。如以上关于图3B所描述的,视图元数据341包括关于视图的数据。可选地,视图元数据341包括以下中的一个或多个停止特性342、跳过特性343、非点击跳过特性344以及其他视图元数据329。在一些实施例中,视图层次结构中的第一有效涉及的视图可以配置成阻止传送相应的子事件到与该第一有效涉及的视图相关联的事件识别器。该行为可以实现跳过特性343。当跳过特性被设置用于应用程序视图时,仍然针对与视图层次结构中的其他有效涉及的视图相关联的事件识别器执行相应的子事件的传送。作为代替,视图层次结构中的第一有效涉及的视图可以配置成阻止传送相应的子事件到与该第一有效涉及的视图相关联的事件识别器,除非该第一有效涉及的视图是点击视图。这种行为可以实现条件性的非点击跳过特性344。在一些实施例中,视图层次结构中的第二有效涉及的视图配置成阻止传送相应的子事件到与该第二有效涉及的视图相关联的事件识别器以及到与第二有效涉及的视图的先辈相关联的事件识别器。这种行为可以实现停止特性342。图3E是例示了根据一些实施例的姿态识别器的示例类和实例(例如,事件处理部件390)的框图。软件应用程序(例如,应用程序133-1)具有一个或多个事件识别器3040。在一些 实施例中,各自的事件识别器(例如,3040-2)是事件识别器类。该各自的事件识别器(例如,3040-2)包括事件识别器特定码338 (例如,定义事件识别器的操作的一组指令)和状态机 340。在一些实施例中,软件应用程序(例如,应用程序133-1)的应用程序状态321包括事件识别器的实例。事件识别器的每个实例是具有状态(例如,事件识别器状态334)的对象。各自的事件识别器实例的“执行”是通过执行对应的事件识别器特定码(例如,338)和更新或保持事件识别器实例3047的状态334来实现。事件识别器实例3047的状态334包括事件识别器实例的状态机340的状态3038。在一些实施例中,应用程序状态321包括多个事件识别器实例3047。各自的事件识别器实例3047通常对应于已经绑定到(也称为“附属于”)应用程序的视图的事件识别器。在一些实施例中,一个或多个事件识别器实例3047绑定到程序层次结构中的各自的应用程序,而不参考该各自的应用程序的任何特定视图。在一些实施例中,应用程序状态321包括各自的事件识别器(例如,3040-2)的多个实例(例如,3047-1到3047-L)。在一些实施例中,应用程序状态321包括多个事件识别器(例如,3040-1到3040-R)的实例3047。在一些实施例中,姿态识别器3040的各自的实例3047-2包括事件识别器状态334。正如上面讨论的,在一些实施例中,事件识别器状态334包括识别器元数据和特性3043以及事件/触摸元数据3045。在一些实施例中,事件识别器状态334还包括视图层次结构参考336,用以指示姿态识别器3040-2的各自的实例3047-2附属于哪个视图。在一些实施例中,识别器元数据和特性3043包括以下或者其子集或超集 排他标志324 ; 排他例外列表326 ; 等待列表327; 延迟触摸开始标志328 ; 延迟触摸结束标志330 ;以及 触摸取消标志332。在一些实施例中,一个或多个事件识别器可以被适于延迟子事件序列中的一个或多个子事件的传送直到事件识别器识别事件之后。这种行为反映了延迟的事件。例如,考虑视图中的单敲姿态,对于其多次轻敲姿态也是可能的。在这种情况下,轻敲事件变成“轻敲+延迟”识别器。实质上,当事件识别器实现这种行为时,事件识别器将延迟事件识别,直到它确认子事件序列事实上确实对应于其事件定义。当接收视图不能适当地响应于取消的事件时,这种行为可能是适合的。在一些实施例中,事件识别器将延迟更新其事件识别状态到其各自的有效涉及的视图,直到事件识别器确认子事件序列不对应于其事件定义。提供延迟触摸开始标志328、延迟触摸结束标志330、以及触摸取消标志332,以使子事件传送技术以及事件识别器和视图状态信息更新适合于具体需要。在一些实施例中,识别器元数据和特性3043包括以下或者其子集或超集 状态机状态/阶段3038,其对于各自的事件识别器实例(例如,3047-2)指示状态机(例如34 0)的状态;状态机状态/阶段3038可以具有各种状态值,诸如“事件可能”、“事件识别出”、“事件失败”以及其他,如下所述;替代地或附加地,状态机状态/阶段3038可以具有各种阶段值,诸如“触摸阶段开始”可以指示触摸数据结构定义了先前的触摸数据结构还没有参考过的新的触摸;“触摸阶段移动”值可以指示正在被定义的触摸从先前的位置已经进行了移动;“触摸阶段静止”值可以指示触摸已经停留在相同的位置;“触摸阶段结束”值可以指示触摸已经结束(例如,用户已经从多点触摸显示器的表面抬离他/她的手指);“触摸阶段取消”值可以指示该触摸已经被该设备取消;取消的触摸可以是不必由用户结束而是设备已经确定要忽略的触摸;例如,设备可以确定该触摸是无心产生的(即,作为将便携式多点触摸使能设备放置在某人的口袋里的结果)并因此而忽略该触摸;状态机状态/阶段3038的每个值都可以是一个整数(本文中称为“姿态识别器状态值”); 动作-目标对3051,其中响应于将事件或触摸识别为姿态或姿态的一部分,每个对认定一个目标,各自的事件识别器实例发送认定的动作消息到该目标; 代表3053,当一个代表被分配给各自的事件识别器实例时,该代表是到对应代表的参考;当一个代表不被分配给各自的事件识别器实例时,代表346包含空值;以及 启用特性3055,其指示各自的事件识别器实例是否启用;在一些实施例中,当各自的事件识别器实例没有启用(例如,禁用)时,各自的事件识别器实例不处理事件或触摸。在一些实施例中,例外列表326还可以由非排他事件识别器使用。特别是,当非排他事件识别器识别事件或子事件时,随后的事件和/或子事件不被传送到与当前活动视图相关联的排他事件识别器,在曾识别出该事件或子事件的事件识别器的例外列表326中所列出的那些排他事件识别器除外。在一些实施例中,事件识别器可以被配置成结合延迟触摸结束标志330使用触摸取消标志332,以阻止不想要的事件和/或子事件发送到点击视图。例如,单敲姿态和双敲姿态的前半部分的定义是一样的。一旦单敲事件识别器成功地识别了单敲,不想要的动作就可能发生。如果设置了延迟触摸结束标志,单敲事件识别器被阻止发送子事件到点击视图,直到识别了单敲事件。另外,单敲事件识别器的等待列表可以认定双敲事件识别器,从而阻止单敲事件识别器识别单敲,直到双敲事件识别器已经进入事件不可能状态。等待列表的使用避免了当执行双敲姿态时执行与单敲相关联的动作。作为代替,响应于双敲事件的识别,只有与双敲相关联的动作才将被执行。转而具体说到在触摸敏感表面上的用户触摸的形式,如上所述,触摸和用户姿态可以包括不必是瞬间的动作,例如,触摸可以包括在一段时间内在显示器上移动或保持手指的动作。然而,触摸数据结构定义了在特定时间的触摸的状态(或者,更一般地,任何输入源的状态)。因此,触模数据结构中存储的值可以在单点触摸的过程中改变,使得单点触摸的状态能够在不同的时间点被转送到应用程序。每个触摸数据结构可以包括各种条目。在一些实施例中,触摸数据结构可以包括至少对应于事件/触摸元数据3045中的触摸特定条目的数据,诸如以下或者其子集或超集 “用于视图的第一触摸”条目345 ; “每触摸信息”条目3051,包括指示该触摸数据结构相关的特定时间(例如,触摸的时间)的“时间戳”信息;可选地,“每触摸信息”条目3051包括诸如对应触摸的位置的其他信息;以及 可选“轻敲计数”条目348。因而,每个触摸数据结构可以定义在特定的时间对于各自的触摸(或其他输入源)正在发生什么(例如,该触摸是否静止、正在被移动等等)以及与该触摸相关联的其他信息(比如位置)。相应地,每个触摸数据结构可以定义在特定时刻的特定触摸的状态。参考相同时间的一个或多个触摸数据结构能够加入到可以定义特定视图在某个时刻正在接收的所有触摸的状态的触摸事件数据结构中(如上所述,一些触摸数据结构还可以参考已经结束且不再被接收的触摸)。随时间推移,为了给软件提供描述视图中正在发生的触摸的连续信息,多点触摸事件数据结构可以发送到实现视图的软件。处理可选地包括多点触摸姿态的复杂的基于触摸的姿态的能力可以增加各种软件应用程序的复杂性。在一些情况下,这种增加的复杂性对于实现高级的和期望的界面特征可能是必要的。例如,一个游戏可以需要处理在不同视图中发生的多点同时触摸的能力,因为游戏经常需要同时按下多个按钮,或者将加速计数据与触摸敏感表面上的触摸结合。然而,一些更简单的应用程序和/或视图不需要高级的界面特征。例如,一个简单的软按钮(即,触摸敏感显示器上显示的按钮)可以满意地以单点触摸而不是多点触摸功能工作。在这些情况下,下层的OS可以发送不必要的或过多的触摸数据(例如,多点触摸数据)到与旨在仅由单点触摸(例如,在软按钮上的单次触摸或轻敲)进行操作的视图相关联的软件部件。因为软件部件可能需更处理这种数据,所以可能需要表征处理多点触摸的软件应用程序的所有复杂性,即使它关联到的视图仅仅与单点触摸相关。这会增加用于设备的软件开发成本,因为已经传统地易于在鼠标界面环境下(即,各种按钮等等)编程的软件部件在多点触摸环境下可能复杂得多。为了降低识别复杂的基于触摸的姿态的复杂性,根据一些实施例,代表可以用于控制事件识别器的行为。如下所述,例如,代表可以确定对应的事件识别器(或姿态识别器)是否可以接收事件(例如,触摸)信息;对应的事件识别器(或姿态识别器)是否可以从状态机的初始状态(例如,事件可能状态)转换到另一个状态;和/或对应的事件识别器(或姿态识别器)是否可以同时地识别事件(例如,触摸)为对应的姿态,而不会阻碍其他事件识别器(或姿态识别器)识别事件或者被识别该事件的其他事件识别器(或姿态识别器)阻碍。然而,应当理解,前面关于评估和处理触摸敏感表面上的用户触摸的复杂性的讨论也适用于用以利用输入设备128操作电子设备102的所有形式的用户输入,其中不是所有的用户输入都在触摸屏上开始,例如,协调鼠标移动和鼠标按钮按下与或不与单个或多个键盘按下或保持、设备旋转或其他移动、用户在触摸板上的诸如轻敲、拖拽、滚动等等的移动、触笔输入、口头指示、检测到的眼睛运动、生物计量输入、检测到的用户生理变化、和/或它们的任何组合,它们可以用作对应于定义将要识别的事件的事件和/或子事件的输入。转向事件信息流,图3F是例示了根据一些实施例的事件信息流的框图。事件调度器模块315 (例如,在操作系统118或应用程序软件124中)接收事件信息,并发送该事件信息到一个或多个应用程序(例如,133-1和133-2)。在一些实施例中,应用程序133-1包括视图层次结构506中的多个视图(例如,对应于图3D中的视图317的508、510和512)以及该多个视图中的多个姿态识别器(516-1到516-3)。应用程序133-1还包括对应于目标-动作对(例如,552-1和552-2)中的目标值的一个或多个姿态处理器550。在一些实施例中,事件调度器模块315从点击视图确定模块314接收点击视图信息,并发送事件信息到点击视图(例如,512)或附属于该点击视图的事件识别器(例如,516-1和516-2)。附加 地或替代地,事件调度器模块315从点击级别确定模块352接收点击级别信息,并发送事件信息到该点击级别中的应用程序(例如,133-1和133-2)或该点击级别应用程序中的一个或多个事件识别器(例如,516-4)。在一些实施例中,接收该事件信息的应用程序中的一个是默从的应用程序(例如,133-2可以是默认应用程序)。在一些实施例中,只有在每个接收应用程序中的姿态识别器的子集被允许(或配置成)接收该事件信息。例如,应用程序133-1中的姿态识别器516-3不接收事件信息。接收事件信息的姿态识别器本文中称为接收姿态识别器。在图3F中,接收姿态识别器516-1、516-2和5164接收事件信息,并将接收的事件信息与接收姿态识别器中的各自的姿态定义3037(图3D)比较。在图3F中,姿态识别器516-1和5164具有匹配所接收的事件信息的各自的姿态定义,并发送各自的动作消息(例如,518-1和518-2)到对应的姿态处理器(例如,552-1和552-3)。图4A描述了包括四个状态的事件识别器状态机400。通过基于接收子事件管理事件识别器状态机400中的状态转换,事件识别器有效地表达了事件定义。例如,轻敲姿态可以由两个或可选地由三个子事件的序列有效地定义。首先,触摸应该被检测到,并且这将是子事件I。例如,触摸子事件可以是用户的手指触摸包括具有状态机400的事件识别器的视图中的触摸敏感表面。其次是,在触摸没有沿任何给定方向实质移动的情况下(例如,触摸位置的任何移动小于预定的阈值,该阈值可以在显示器上被测量为距离(例如,5mm)或像素数目(例如,5个像素))的可选的测得的延迟将用作子事件2,其中该延迟足够短。最后,触摸的终止(例如,用户的手指抬离触摸敏感表面)将用作子事件3。通过编码事件识别器状态机400以基于正在接收这些子事件而在状态之间转换,事件识别器状态机400有效地表达了轻敲姿态事件定义。然而,应该注意到,图4A中示出的状态是示例性的状态,且事件识别器状态机400可以包含更多或更少的状态,和/或事件识别器状态机400中的每个状态可以对应于示出的状态或者任何其他状态中的一个。在一些实施例中,不考虑事件类型,事件识别器状态机400在事件识别开始状态405开始,并可以根据接收了什么子事件而进行到任意剩余的状态。为了方便讨论事件识别器状态机400,将讨论从事件识别开始状态405到事件识别出状态415、事件可能状态410和事件不可能状态420的直接路径,接着是对从事件可能状态410引出的路径的描述。从事件识别开始状态405开始,如果接收的子事件自身包含对于事件的事件定义,则事件识别器状态机400将转换到事件识别出状态415。从事件识别开始状态405开始,如果接收的子事件不是事件定义的第一个子事件,则事件识别器状态机400将转换到事件不可能状态420。从事件识别开始状态405开始,如果接收的子事件是给定事件定义的第一个子事件而不是最后的子事件,则事件识别器状态机400将转换到事件可能状态410。如果接收的下一个子事件是给定事件定义的第二个子事件而不是最后的子事件,则事件识别器状态机400将保持在事件可能状态410。只要接收的子事件序列继续是事件定义的一部分,事件识别器状态机400就可以保持在事件可能状态410。如果在事件识别器状态机400处于事件可能状态410的任何时刻,事件识别器状态机400接收到不是事件定义的一部分的子事件,那么它将转换到事件不可能状态420,从而确定当前事件(如果有的话)不是对应于这个事 件识别器(即,对应于状态400的事件识别器)的事件类型。另一方面,如果事件识别器状态机400处于事件可能状态410,并且事件识别器状态机400接收到事件定义中的最后的子事件,则它将转换到事件识别出状态415,从而完成成功的事件识别。图4B描述了输入源处理过程440的实施例,该实施例具有表示视图如何接收关于各自的输入的信息的有限状态机。应当注意,当设备的触摸敏感表面上存在多个触摸时,触摸中的每个都是具有其自己的有限状态机的单独输入源。在这个实施例中,输入源处理过程440包括四个状态输入序列开始445、输入序列继续450、输入序列结束455以及输入序列取消460。输入源处理过程440可以由各自的事件识别器使用,例如,当输入将要传送到应用程序时,但是只在检测到输入序列完成之后。输入源处理过程440可以与不能取消或撤销响应于传送到该应用程序的输入序列而做的改变的应用程序一起使用。应该注意到,图4B中示出的状态是示例性状态,输入源处理过程440可以包含更多或更少的状态,和/或输入源处理过程440中的每个状态可以对应于示出的状态或者任何其他状态中的一个。从输入序列开始445开始,如果接收的输入自己完成一个输入序列,则输入源处理过程440将转换到输入序列结束455。从输入序列开始445开始,如果接收的输入指示输入序列终止,则输入源处理过程440将转换到输入序列取消460。从输入序列开始445开始,如果接收的输入是输入序列中的第一个而不是最后一个输入,那么输入源处理过程440将转换到输入序列继续状态450。如果接收的下一个输入是输入序列中的第二个输入,则输入源处理过程440将保持在输入序列继续状态450。只要正被传送的子事件序列继续是给定输入序列的一部分,输入源处理过程440就可以保持在输入序列继续状态450。如果在输入源处理过程440处于输入序列继续状态450中的任何时刻,且输入源处理过程440接收到不是输入序列的一部分的输入,那么它将转换到输入序列取消状态460。另一方面,如果输入源处理过程440处于输入序列继续450中,且输入源处理过程440接收到给定输入定义中的最后的输入,它将转换到输入序列结束455,从而成功地接收一组子事件。在一些实施例中,对于特定视图或程序级别可以实现输入源处理过程440。在该情况下,某些子事件序列可以导致转换到输入取消状态460。
作为例子,考虑图4C,图4C假设一个有效涉及的视图,该视图仅仅由有效涉及视图输入源处理器480 (此后称为“视图480”)表示。视图480包括垂直挥击事件识别器,该事件识别器仅仅由垂直挥击事件识别器468 (此后称为“识别器468” )作为其事件识别器之一来表示。在该情况下,识别器468可以需要作为其定义的一部分来检测1)手指放下465-1 ;2)可选的短延迟465-2 ;3)至少N个像素的垂直挥击465-3 ;以及4)手指抬离465-4。对于这个例子,识别器468还设置它的延迟触摸开始标志328和触摸取消标志332。现在考虑以下子事件序列到识别器468以及视图480的传送 子事件序列465-1 :检测手指放下,该手指放下对应于识别器468的事件定义 子事件序列465-2 :测量延迟,该延迟对应于识别器468的事件定义 子事件序列465-3 :手指执行垂直挥击运动,该垂直挥击运动可与垂直滚动兼 容,但是少于N个像素,因此并不对应于识别器468的事件定义 子事件序列465-4 :检测手指抬离,该手指抬离对应于识别器468的事件定义在这里,识别器468将成功地识别子事件I和2作为它的事件定义的一部分,相应地,将除在子事件3的传送之前处于事件可能状态472。由于识别器468设置了它的延迟触摸开始标志328,因此初始的触摸子事件不发送到点击视图。相应地,视图480的输入源处理过程440恰在子事件3的传送之前将仍然处于输入序列开始状态。一旦完成了子事件3到识别器468的传送,识别器468的状态转换到事件可能476,并且重要的是,识别器468现在已经确定子事件序列不对应于它的特定的垂直挥击姿态事件类型(即,它已经决定该事件不是垂直挥击。换句话说,在这个例子中,作为垂直挥击的识别474没有发生)。用于视图输入源处理器480的输入源处理系统440也将更新其状态。在一些实施例中,当事件识别器发送指示已经它已经开始识别事件的状态信息时,视图输入源处理器480的状态将从输入序列开始状态482进行到输入序列继续状态484。当触摸或输入结束且由于已经设置了事件识别器的触摸取消标志322而没有被识别的事件时,视图输入源处理器480进行到输入序列取消状态488。作为替代,如果没有设置事件识别器的触摸取消标志322,则当触摸或输入结束时,视图输入源处理器480进行到输入序列结束状态486。由于设置了事件识别器468的触摸取消标志332,所以当事件识别器468转换到事件不可能状态476时,该识别器将发送触摸取消子事件或消息到对应于该事件识别器的点击视图。结果是,视图输入源处理器480将转换到输入序列取消状态488。在一些实施例中,子事件465-4的传送与由识别器468做出的事件识别决定没有密切的关系,尽管视图输入源处理器480的其他事件识别器(如果有的话)可以继续分析该子事件序列。下面的表格以概括列表的形式给出了与上述的事件识别器468的状态相关的该示例子事件序列465的处理,以及视图输入源处理器480的状态。在该例中,由于设置了识别器468的触摸取消标志332,所以视图输入源处理器480的状态从输入序列开始445进行到输入序列取消488 子事件序列465状态识别器468 状态视图480传送开始前事件识别开始470
检测手指放下465-1 事件可能472输入序列开始482测量延迟465-2事件可能472输入序列继续484检测手指垂直挥击465-3事件不可能476 输入序列继续484检测手指抬离465-4 事件不可能476 输入序列取消488转到图5A,注意力转到子事件序列520的例子,子事件序列520被包括多个事件识别器的视图接收。对于这个例子,在图5A中示出了两个事件识别器,即滚动事件识别器580和轻敲事件识别器590。出于例示的目的,图3A中的视图搜索结果面板304将与子事件序列520的接收相关,并且滚动事件识别器580和轻敲事件识别器590中的状态发生转换。注意到在该例中,子事件序列520定义了在触摸敏感显示器或轨迹板上的轻敲手指姿态,但是同样的事件识别技术可以适用于大量的上下文(例如,检测鼠标按钮按下)中和/或使用程序级别的程序层次结构的实施例中。 在第一个子事件传送到视图搜索结果面板304之前,事件识别器580和590分别处于事件识别开始状态582和592。接着触摸301作为检测手指放下子事件521-1被传送到用于视图搜索结果面板304的有效涉及的事件识别器作为触摸子事件301-2(以及传送到用于地图视图305的有效涉及的事件识别器作为触摸子事件301-3),滚动事件识别器580转换到事件可能状态584,类似地,轻敲事件识别器590转换到事件可能状态594。这是因为轻敲和滚动的事件定义都是以触摸(例如,在触摸敏感表面上检测手指放下)开始的。轻敲和滚动姿态的一些定义可能可选地包括在初始触摸和在事件定义中的任何下一步之间的延迟。在此讨论的所有例子中,用于轻敲和滚动姿态二者的示例事件定义识别第一触摸子事件(检测手指放下)之后的延迟子事件。相应地,当测量延迟子事件521-2传送到事件识别器580和590时,二者分别保持在事件可能状态584和594。最后,检测手指抬离子事件521-3传送到事件识别器580和590。在该情况下,用于事件识别器580和590的状态转换是不同的,因为用于轻敲和滚动的事件定义不同。在滚动事件识别器580的情况下,保持在事件可能状态中的下一个子事件将是检测移动。然而,由于传送的子事件是检测手指抬离521-3,所以滚动事件识别器580转换到事件不可能状态588。而轻敲事件定义以手指抬离子事件结束。因此,在传送检测手指抬离子事件521-3之后,轻敲事件识别器590转换到事件识别出状态596。注意,在一些实施例中,正如上面关于图4B和4C讨论的,图4B中讨论的输入源处理过程440可出于各种目的而用在视图级别处。下面的表格以概括列表的形式给出事件识别器580、590相关的子事件序列520的传送以及输入源处理过程440 子W 序列520 状态滚动料状态轻敲只状态输入源处理
__识别器580别器590过程440_
传送开始前^fsH财J开始^HP^'J^592
__582____
检测手指放下521-1事件可能584事件可能594输入序列开始445
测量延迟521-2 事件可能584事件可能594输入序列继续450
检测手指抬离521-3事件不可能588事件识别出596输入序列结束455转到图5B,注意力转到另一个示例子事件序列530,子事件序列530被包括多个事 件识别器的视图接收。对于这个例子,在图5B中示出了两个事件识别器,即滚动事件识别器580和轻敲事件识别器590。出于例示的目的,图3A中的视图搜索结果面板304将与子事件序列530的接收相关,并且滚动事件识别器580和轻敲事件识别器590的状态发生转换。注意到在该例中,子事件序列530定义了在触摸敏感显示器上的滚动手指姿态,但是同样的事件定义技术可以适用于大量的上下文(例如,检测鼠标按钮按下、鼠标移动和鼠标按钮释放)中和/或使用程序级别的程序层次结构的实施例中。在第一个子事件传送到用于视图搜索结果面板304的有效涉及的事件识别器之前,事件识别器580和590分别处于事件识别开始状态582和592。接着对应于触摸301的子事件的发送(如上面讨论的),滚动事件识别器580转换到事件可能状态584,类似地,轻敲事件识别器590转换到事件可能状态594。当测量延迟子事件531-2传送到事件识别器580和590时,二者分别转换到事件可能状态584和594。接下来,检测手指移动子事件531-3传送到事件识别器580和590。在该情况下,用于事件识别器580和590的状态转换是不同的,因为用于轻敲和滚动的事件定义不同。在滚动事件识别器580的情况下,保持在事件可能状态中的下一个子事件是检测移动,所以当滚动事件识别器580接收到检测手指移动子事件531-3时滚动事件识别器580保持在事件可能状态584中。然而,如上面讨论的,用于轻敲的定义以手指抬离子事件结束,所以轻敲事件识别器590转换到事件不可能状态598。最后,检测手指抬离子事件531-4传送到事件识别器580和590。轻敲事件识别器已经处于事件不可能状态598,故而没有状态转换发生。滚动事件识别器580的事件定义以检测手指抬离结束。由于传送的子事件是检测手指抬离531-4,所以滚动事件识别器580转换到事件识别出状态586。注意到触摸敏感表面上的手指移动可能产生多个移动子事件,因此滚动可能在抬离前被识别出来或者继续识别直到抬离。下面的表格以概括列表的形式给出与事件识别器580、590相关的子事件序列530的传送以及输入源处理过程440 子辦序列530 状态滚动辦状态轻敲抑N只状态输入源处理
__识别器580 别器590__过程440_
传送开始前别开始斯始592
__5^___
检测手指放下531-1事件可能584事件可能594 输入序列开始445
测量延迟531-2 事件可能584事件可能594 输入序列继续450
检测手指移动531-3事件可能584事件不可能598 输入序列继续450检测手指抬离531~4事件识别出586事件不可能598 输入序列结束455转到图5C,注意力转到又一个示例子事件序列540,子事件序列540正被包括多个事件识别器的视图接收。对于这个例子,在图5C中示出了两个事件识别器,即双敲事件识别器570和轻敲事件识别器590。出于例示的目的,图3A中的地图视图305将与子事件序列540的接收相关,并且双敲事件识别器570和轻敲事件识别器590中的状态发生转换。注意到在该例中,子事件序列540定义了在触摸敏感显示器上的双敲姿态,但是同样的事件识别技术可以适用于大量的上下文(例如,检测鼠标双击)中和/或使用程序级别的程序层次结构的实施例中。在第一个子事件传送到用于地图视图305的有效涉及的事件识别器之前,事件识别器570和590分别处于事件识别开始状态572和592。接着将与触摸子事件301相关的子事件传送到地图视图304 (如上所述),双敲事件识别器570和轻敲事件识别器590分别转换到事件可能状态574和594。这是因为轻敲和双敲的事件定义都是以触摸(例如,在触摸敏感表面上检测手指放下541-1)开始的。当测量延迟子事件541-2传送到事件识别器570和590时,二者分别转换到事件可能状态574和594。接下来,检测手指抬离子事件541-3传送到事件识别器570和590。在该情况下,事件识别器580和590的状态转换是不同的,因为用于轻敲和双敲的示例性事件定义不同。在轻敲事件识别器590的情况下,事件定义中的最后一个子事件是要检测手指抬离,所以轻敲事件识别器590转换到事件识别出状态596。然而,无论用户最终可能做什么,由于已经开始了一个延迟,所以双敲事件识别器570保持在事件可能状态574。不过用于双敲的完整事件识别定义需要另一个延迟,其后跟着完整的轻敲子事件序列。这造成了已经处于事件识别出状态576的轻敲事件识别器590与仍处于事件可能状态574的双敲事件识别器570之间的模糊情况。相应地,在一些实施例中,正如上面关于图3B和3C讨论的,事件识别器可以实现排他标志以及排他例外列表。这里,将设置用于轻敲事件识别器590的排他标志324,另外,将用于轻敲事件识别器590的排他例外列表326配置成在轻敲事件识别器590进入事件识别出状态596之后继续允许子事件传送到一些事件识别器(例如,双敲事件识别器570)。当轻敲事件识别器590保持在事件识别出状态596时,子事件序列540继续传送到双敲事件识别器570,其中测量延迟子事件541-4、检测手指放下子事件541-5和测量延、迟子事件541-6保持双敲事件识别器570处于事件可能状态574 ;序列540的最后子事件即检测手指抬离541-7的传送将双敲事件识别器570转换到事件识别出状态576。此时,地图视图305获取由事件识别器570识别的双敲事件,而不是轻敲事件识别器590识别的单敲事件。根据被设置的轻敲事件识别器590的排他标志324、轻敲事件识别器590的包括双敲事件的排他例外列表326、以及轻敲事件识别器590和双敲事件识别器570两者都成功地识别了其各自的事件类型的事实,作出了该获取双敲事件的决定。下面的表格以概括列表的形式给出与事件识别器570和590相关的子事件序列540的传送以及子事件处理过程440
子事件序列540 状态双敲事件状态轻敲事件识状态输入源处理__器 570别器 590__过程 440_传送开始前只别辦卿592
_____
检测手指放下541-1事件可能574事件可能594 输入序列开始445测量延退541-2 事件可能574事件可能594 输入序列继续450检测手指抬离541-3事件可能574事件识别出596 输入序列继续450测量延迟541~4 事件可能574事件识别出596 输入序列继续450检测手指放下541-5事件可能574事件识别出596 输入序列继续450测量延迟541~6 事件可能574事件识别出596 输入序列继续450^ 测手指抬离S41-7事只别出576事件识别出596 输入序列结束455在另一个实施例中,在图5C的事件场景中,单敲姿态没有被识别,因为单敲事件识别器具有认定双敲事件识别器的等待列表。结果是,单敲姿态不会被识别直到(如果可能出现)双敲事件识别器进入事件不可能状态。在该例中,识别了双敲姿态,单敲事件识别器将继续处于事件可能状态直到识别出双敲姿态,此时单敲事件识别器将转换到事件不可能状态。现在关注图6A和6B,图6A和6B是例示了根据一些实施例的事件识别方法的流程图。该方法600在电子设备中执行,如上面讨论的,在一些实施例中,该电子设备可以是电子设备102。在一些实施例中,该电子设备可以包括配置成检测多点触摸姿态的触摸敏感表面。作为替代,该电子设备可以包括配置成检测多点触摸姿态的触摸屏。方法600配置成执行包括具有多个视图的视图层次结构的软件。方法600显示608视图层次结构中的一个或多个视图,并执行610 —个或多个软件元素。每个软件元素与一个特定视图相关联,每个特定视图包括一个或多个事件识别器,诸如那些分别在图3B和3C中描述为事件识别器结构320和360的事件识别器。每个事件识别器一般包括基于一个或多个子事件的事件定义,其中事件定义可以作为状态机实现,例如参见图3B中的状态机340。事件识别器一般还包括事件处理器,其中事件处理器指定对目标的动作,并被配置成响应于事件识别器检测到与事件定义对应的事件而发送动作到目标。在一些实施例中,如图6A的步骤612所指示的,多个事件识别器中的至少一个是具有姿态定义和姿态处理器的姿态识别器。在一些实施例中,如图6A的步骤614所指示的,事件定义定义了用户姿态。作为替代,事件识别器具有一组事件识别状态616。这些事件识别状态可以至少包括事件可能状态、事件不可能状态和事件识别出状态。在一些实施例中,如果事件识别器进入事件可能状态,则事件处理器开始其用于传送到目标的对应动作的准备618。正如上面关于图4A和图5A-5C中的例子所讨论的,为 每个事件识别器实现的状态机一般包括初始状态,例如,事件识别开始状态405。接收形成事件定义的初始部分的子事件触发状态变化到事件可能状态410。相应地,在一些实施例中,随着事件识别器从事件识别开始状态405转换到事件可能状态410,事件识别器的事件处理器可以在事件被成功地识别出之后开始准备它的特定动作用以传送到事件识别器的目标。另一方面,在一些实施例中,如果事件识别器进入事件不可能状态420,则事件处理器可以终止其对应动作的准备620。在一些实施例中,终止对应的动作包括取消该事件处理器的对应动作的任何准备。图5B的例子为该实施例提供了信息,因为轻敲事件识别器590可能已经开始了对其动作的准备618,但是然后,一旦检测手指移动子事件531-3传送到轻敲事件识别器590,识别器590就将转换到事件不可能状态598、578。此时,轻敲事件识别器590可以终止对已经开始准备618的动作的准备620。在一些实施例中,如果事件识别器进入事件识别出状态,那么事件处理器完成其用于传送到目标的对应动作的准备622。图5C的例子例示了该实施例,因为用于地图视图305的由有效涉及的事件识别器识别了双敲,在一些实施例中,这将是绑定到选择和/或执行由地图视图305示出的搜索结果的事件。这里,在双敲事件识别器570成功地识别出由子事件序列540构成的双敲事件之后,地图视图305的事件处理器完成对其动作的准备622,即指示它已经接收到了激活命令。在一些实施例中,事件处理器传送624其对应动作到与事件识别器相关联的目标。继续图5C的例子,准备的动作,即地图视图305的激活命令,将传送到与地图视图305相关联的特定目标,该特定目标可以是任何适合的程序方法或对象。作为替代,多个事件识别器可以并行地独立地处理626 —个或多个子事件的序列。在一些实施例中,一个或多个事件识别器可以被配置为排他事件识别器628,正如上面关于图3B和3C分别讨论的排他标志324和364。当事件识别器被配置为排他事件识别器时,事件传送系统阻止视图层次结构中用于有效涉及的视图的任何其他事件识别器(除了那些在识别该事件的事件识别器的例外列表326、366中列出的)在排他事件识别器识别出事件之后接收(同一子事件序列的)随后的子事件。进一步地,当非排他事件识别器识别出事件时,事件传送系统阻止视图层次结构中用于有效涉及的视图的任何排他事件识别器接收随后的子事件,那些(如果有的话)在识别该事件的事件识别器的例外列表326、366中列出的除外。在一些实施例中,排他事件识别器可以包括630事件例外列表,正如上面关于图3B和3C分别讨论的排他例外列表326和366。注意如图5C的上述讨论,事件识别器的排他例外列表可以用于即使当构成其各自事件定义的子事件序列交叠时,也允许事件识别器继续进行事件识别。相应地,在一些实施例中,事件例外列表包括其对应的事件定义具有重复的子事件的事件632,例如图5C的单敲/双敲事件示例。作为替代,事件定义可以定义用户输入操作634。在一些实施例中,一个或多个事件识别器可以适用于延迟子事件序列中的每个子事件的传送直到事件被识别之后。方法600检测636—个或多个子事件的序列,在一些实施例中,一个或多个子事件的序列可以包括本原(primitive)触摸事件638。本原触摸事件可以包括但不限于触摸敏感表面上基于触摸的姿态的基本部件,例如与初始的手指或触笔触摸放下相关的数据、与多指或触笔开始跨触摸敏感表面移动相关的数据、双指反向移动、从触摸敏感表面抬离触
擎坐坐—个或多个子事件的序列中的子事件可以包括多种形式,包括但不限于,键按下、键按下保持、键释放、按钮按下、按钮按下保持、按钮按下释放、操纵杆移动、鼠标移动、鼠标按钮按下、鼠标按钮释放、触笔触摸、触笔移动、触笔释放、口头指示、检测到的眼睛运动、生物计量输入、检测到的用户生理变化以及其他。方法600认定640视图层次结构的视图中的一个作为点击视图。点击视图确立视图层次结构中的哪些视图是有效涉及的视图。图3A中示出了例子,其中有效涉及的视图303包括搜索结果面板304和地图视图305,因为触摸子事件301接触与地图视图305相关联的区域。在一些实施例中,视图层次结构中的第一有效涉及的视图可以配置成642阻止各自的子事件传送到与第一有效涉及的视图相关联的事件识别器。该行为可以实现上面关于图3B和3C讨论的跳过特性(分别是330和370)。当针对事件识别器设置了跳过特性时,对于与视图层次结构中与其他有效涉及的视图相关联的事件识别器,仍然执行备自的子事件的传送。作为替代,视图层次结构中的第一有效涉及的视图可以配置成644阻止各自的子事件传送到与第一有效涉及的视图相关联的事件识别器,除非第一有效涉及的视图是点击视图。该行为可以实现上面关于图3B和3C讨论的条件性跳过特性(分别是332和372)。在一些实施例中,视图层次结构中的第二有效涉及的视图配置成646阻止各自的子事件传送到与第二有效涉及的视图相关联的事件识别器以及与第二有效涉及的视图的先辈相关联的事件识别器。该行为可以实现上面关于图3B和3C讨论的停止特性(分别是328 和 368)。方法600传送648各自的子事件到用于视图层次结构中每个有效涉及的视图的事件识别器。在一些实施例中,用于视图层次结构中有效涉及的视图的事件识别器在处理子事件序列中的下一个子事件之前处理各自的子事件。作为替代,用于视图层次结构中有效涉及的视图的事件识别器在处理各自的子事件时做出它们的子事件识别决定。、
在一些实施例中,用于视图层次结构中有效涉及的视图的事件识别器可以同时处理一个或多个子事件的序列650 ;作为替代,用于视图层次结构中有效涉及的视图的事件识别器可以并行地处理一个或多个子事件的序列。 在一些实施例中,一个或多个事件识别器可以被适用于延迟传送652子事件序列的一个或多个子事件直到事件识别器识别出事件之后。该行为反映了延迟的事件。例如,考虑视图中的单敲姿态,对于其多次轻敲姿态也是可能的。在这种情况下,轻敲事件变成“轻敲+延迟”识别器。实质上,当事件识别器实现该行为时,事件识别器将延迟事件识别直到它确认子事件序列事实上确实对应于其事件定义。当接收视图不能适当地响应于取消的事件时该行为可以是适合的。在一些实施例中,事件识别器将延迟更新它的事件识别状态到它的各自的有效涉及的视图,直到事件识别器确认子事件序列不对应于其事件定义。如上面关于图3B和3C讨论的,提供延迟触摸开始标志328、368,延迟触摸结束标志330、370,以及触摸取消标志332、372使子事件传送技术以及事件识别器和视图状态信息更新适合于 具体需要。图7A-7S例示了根据一些实施例的为了导航通过同时打开的应用程序而由事件识别器识别的示例用户界面和用户输入。这些图中的用户界面用于例示下述过程,包括图8A-8B、图9A-9C以及图10A-10B中的过程。尽管下面的许多例子将参考触摸屏显示器156 (其中结合了触摸敏感表面和显示器)上的输入给出,但是在一些实施例中,设备检测独立于显示器的触摸敏感表面(例如,触摸板或轨迹板)上的输入。在一些实施例中,触摸敏感表面的主轴对应于显示器上的主轴。根据这些实施例,设备在对应于显示器上的各自位置的位置处检测与触摸敏感表面的接触。这样,当触摸敏感表面和显示器分开时,由设备在触摸敏感表面上检测到的用户输入由设备用于操纵电子设备的显示器上的用户界面。应该理解,类似的方法可以用于本文描述的其他用户界面。图7A例示了根据一些实施例的电子设备102上的示例用户界面(“始位画面”708)。类似的用户界面可以在电子设备102上实现。在一些实施例中,始位画面708由应用程序启动器软件应用程序显示,有时称为出发点(springboard)。在一些实施例中,触摸屏156上的用户界面包括以下元素或者其子集或超集 无线通信的信号强度指示器702,诸如蜂窝和Wi-Fi信号; 时间704;以及 电池状态指示器706。示例的用户界面包括多个应用程序图标5002(例如,5002-25到5002-38)。从始位画面708,手指姿态可以用于启动应用程序。例如,在对应于应用程序图标5002-36的位置处的轻敲手指姿态701开始启动电子邮件应用程序。在图7B,响应于在应用程序图标5002-36上检测到手指姿态701,启动电子邮件应用程序并在触摸屏156上显示电子邮件应用程序视图712-1。用户可以以类似的方式启动其他应用程序。例如,用户可以按下始位按钮710而从任何应用程序视图712返回到始位画面708 (图7A),并在始位画面708上的各自的应用程序图标5002上使用手指姿态启动其他应用程序。图7C-7G例示了响应于在与始位画面708上各自的应用程序图标5002相对应的位置处检测到各自的手指姿态而顺序地启动各自的应用程序,以及依次显示各自的用户界面(即,各自的应用程序视图)。特别地,图7C例示了响应于应用程序图标5002-32上的手指姿态,显示媒体库应用程序视图712-2。在图7D中,响应于应用程序图标5002-30上的手指姿态,显示记事本应用程序视图712-3。图7E例示了响应于应用程序图标5002-27上的手指姿态,显示地图应用程序视图712-4。在图7F中,响应于应用程序图标5002-28上的手指姿态,显示天气应用程序视图712-5。图7G例示了响应于应用程序图标5002-37上的手指姿态,显示网页浏览器应用程序视图712-6。在一些实施例中,打开的应用程序的序列对应于电子邮件应用程序、媒体库应用程序、记事本应用程序、地图应用程序、天气应用程序以及网页浏览器应用程序的启动。图7G还例示了在用户界面对象(例如,书签图标)上的手指姿态703 (例如,轻敲姿态)。在一些实施例中,响应于在书签图标上检测到手指姿态703,网页浏览器应用程序在触摸屏156上显示书签列表。类似地,用户可以用其他姿态(例如,在地址用户界面对象上的轻敲姿态,其允许用户通常使用屏幕上键盘来输入新地址或修改显示的地址;在显示的网页中的任何链接上的轻敲姿态,其开始导航至与所选链接对应的网页;等等)与显示 的应用程序(例如,网页浏览器应用程序)交互。在图7G中,检测到第一预定输入(例如,在始位按钮710上的双击705)。作为替代,在触摸屏156上检测到多指挥击姿态(例如,三指向上挥击姿态,如利用手指接触707、709和711的移动所例示的)。图7H例示了响应于检测到第一预定输入(例如,双击705或者包括手指接触707、709和711的多指挥击姿态),同时显示网页浏览器应用程序视图712-6的一部分以及应用程序图标区域716。在一些实施例中,响应于检测到第一预定输入,设备进入应用程序视图选择模式,用于选择同时打开的应用程序中的一个,并且网页浏览器应用程序视图712-6的那部分以及应用程序图标区域716同时显示为应用程序视图选择模式的一部分。应用程序图标区域716包括至少对应于多个同时打开的应用程序中的一些的一组打开的应用程 序图标。在该例中,便携式电子设备具有同时打开的多个应用程序(例如,电子邮件应用程序、媒体库应用程序、记事本应用程序、地图应用程序、天气应用程序以及网页浏览器应用程序),尽管它们不都同时显示。如图7H中例示的,应用程序图标区域716包括用于天气应用程序、地图应用程序、记事本应用程序和媒体库应用程序(即,在打开的应用程序的序列中,紧接着当前显示的应用程序即网页浏览器应用程序的四个应用程序)的应用程序图标(例如,5004-2、5004-4、5004-6以及5004-8)。在一些实施例中,在应用程序图标区域716中显示的打开的应用程序图标的序列或顺序对应于在预定序列中的打开的应用程序的序列(例如,天气、地图、记事本和媒体库应用程序)。图7H还例示了在打开的应用程序图标5004-8上检测到姿态713 (例如,轻敲姿态)。在一些实施例中,响应于检测到姿态713,显示对应的应用程序视图(例如,媒体库应用程序视图712-2,图7C)。图7H例示了在对应于应用程序图标区域716的位置处检测到左挥击姿态715。在图71中,响应于检测到左挥击姿态715,滚动应用程序图标区域716中的应用程序图标(例如,5004-2、5004-4、5004-6以及5004-8)。滚动的结果是,用于电子邮件应用程序的应用程序图标5004-12代替先前显不的应用程序图标(例如,5004-2、5004-4、5004_6以及5004-8)显示在应用程序图标区域506中。在图7J中,在网页浏览器应用程序视图712-6上检测到第一类型的姿态(例如,包括手指接触717、719和721的移动的多指左挥击姿态)。图7K例示了响应于检测到第一类型的姿态,天气应用程序视图712-5显示在触摸屏156上。应该注意,天气应用程序在打开的应用程序的序列中紧接在网页浏览器应用程序之后。图7K还例示了在天气应用程序视图712-5上检测到第一类型的第二姿态(例如,包括手指接触723、725和727的移动的多指左挥击姿态)。图7L例示了响应于检测到第一类型的第二姿态,地图应用程序视图712-4显示在触摸屏156上。应该注意,地图应用程序在打开的应用程序的序列中紧接在天气应用程序之后。图7L还例示了在地图应用程序视图712-4上检测到第一类型的第三姿态(例如,
包括手指接触729、731和733的移动的多指左挥击姿态)。图7M例示了响应于检测到第一类型的第三姿态,记事本应用程序视图712-3显示在触摸屏156上。应该注意,记事本应用程序在打开的应用程序的序列中紧接在地图应用程序之后。图7M还例示了在记事本应用程序视图712-3上检测到第一类型的第四姿态(例如,包括手指接触735、737和739的移动的多指左挥击姿态)。图7N例示了响应于检测到第一类型的第四姿态,媒体库应用程序视图712-2显示在触摸屏156上。应该注意,媒体库应用程序在打开的应用程序的序列中紧接在记事本应用程序之后。图7N还例示了在媒体库应用程序视图712-2上检测到第一类型的第五姿态(例如,包括手指接触741、743和745的移动的多指左挥击姿态)。图70例示了响应于检测到第一类型的第五姿态,电子邮件应用程序视图712-1显示在触摸屏156上。应该注意,电子邮件应用程序在打开的应用程序的序列中紧接在媒体库应用程序之后。图70还例示了在电子邮件应用程序视图712-1上检测到第一类型的第六姿态(例如,包括手指接触747、749和751的移动的多指左挥击姿态)。图7P描述了响应于检测到第一类型的第六姿态,网页浏览器应用程序视图712-6显示在触摸屏156上。应该注意,网页浏览器应用程序在打开的应用程序的序列的一端,而电子邮件应用程序在打开的应用程序的序列的另一端。图7P还例示了在网页浏览器应用程序视图712-6上检测到第二类型的姿态(例如,包括手指接触753、755和757的移动的多指右挥击姿态)。图7Q例示了,在一些实施例中,响应于检测到第二类型的姿态,电子邮件应用程序视图712-1显示在触摸屏156上。参考图7R,在网页浏览器应用程序视图712-6上检测到多指姿态(例如,包括手指接触759、761、763、765和767的移动的五指捏姿态)。图7S例示了当在触摸屏156上检测到多指姿态时,网页浏览器应用程序视图712-6和至少一部分始位画面708同时显示。如所例示的,网页浏览器应用程序视图712-6以缩小比例显示。当在触摸屏156上检测到多指姿态时,根据该多指姿态调整缩小比例。例如,缩小比例随着手指接触759、761、763、765和767的进一步抓捏而减小(即,网页浏览器应用程序视图712-6以更小的比例显示)。作为代替,缩小比例随着手指接触759、761、763、765和767的散开而增大(即,网页浏览器应用程序视图712-6以比之前更大的比例显示)。在一些实施例中,当停止检测到多指姿态时,停止显示网页浏览器应用程序视图712-6并显示整个始位画面708。作为代替,当停止检测到多指姿态时,确定是否要以满屏比例显示始位画面708或者网页浏览器应用程序视图712-6。在一些实施例中,当停止显示多指姿态时,基于缩小比例作出确定(例如,如果当停止检测到多指姿态时应用程序视图以小于预定阈值的比例显示,则显示整个始位画面708 ;如果当停止检测到多指姿态时应用程序视图以大于预定阈值的比例显示,则以满屏比例显示应用程序视图而不显示始位画面708)。在一些实施例中,确定还基于多指姿态的速度作出。图8A和8B是例示了根据一些实施例的事件识别方法800的流程图。方法800在具有触摸敏感显示器的电子设备(例如,设备102,图1B)中执行(802)。该电子设备配置成至少执行第一软件应用程序和第二软件应用程序。第一软件应用程序包括第一组一个或多个姿态识别器,第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器(例如,应用程序133-2具有姿态识别器516-4,以及应用程序133-1具有姿态识别器516-1到516-3以及视图508、510和512,图3F)。各自的姿态识别器具有相对应的姿态处理器(例如,姿态处理器552-1对应于姿态识别器516-1,而姿态处理器552-3对应于姿态识别器516-4)。第一组一个或多个姿态识别器通常不同于第二组一个或多个姿态识别器。方法800允许用户使用姿态控制当前没有在电子设备的显示器上显示的隐藏打开的应用程序(例如,第一软件应用程序),例如后台应用程序、挂起的应用程序或者休眠的应用程序。因此,用户可以执行不是由当前显示在电子设备的显示器上的应用程序(例如,第二软件应用程序)提供的而是由当前打开的应用程序中的一个提供的操作(例如,对于隐藏的应用程序启动器软件应用程序使用姿态来显示始位画面或切换到下一个软件应用程序)。在一些实施例中,第一软件应用程序(804)是应用程序启动器(例如,出发点)。例如,如图7A中所示出的,应用程序启动器显示对应于多个应用程序的多个应用程序图标5002。应用程序启动器接收对应用程序图标5002的用户选择(例如,基于触摸屏156上的手指姿态),并响应于接收到该用户选择,启动对应于选择的应用程序图标5002的应用程序。
第二软件应用程序通常是由应用程序启动器启动的软件应用程序。如图7A和7B中所例示的,应用程序启动器接收关于电子邮件应用程序图标5002-36上的轻敲姿态701的信息并启动电子邮件应用程序。作为响应,电子邮件应用程序在触摸屏156上显示电子邮件应用程序视图712-1。第二软件应用程序可以是对应于应用程序图标5002(图7A)的任何应用程序,或者可以由应用程序启动器启动的任何其他应用程序(例如,媒体库应用程序,图7C ;记事本应用程序,图7D ;地图应用程序,图7E ;天气应用程序,图7F ;网页浏览器应用程序,图7G ;等等)。在方法800的以下描述中,应用程序启动器用作示例性的第一软件应用程序,并且网页浏览器应用程序用作示例性的第二软件应用程序。在一些实施例中,电子设备具有程序层次结构中的仅两个软件应用程序应用程序启动器和一个其他软件应用程序(通常是对应于显示在电子设备102的触摸屏156上的一个或多个视图的软件应用程序)。在一些实施例中,第一软件应用程序(806)是操作系统应用程序。本文所使用的操作系统应用程序涉及集成了操作系统118的应用程序(图1A-1C)。操作系统应用程序通常驻留在图2中的核心OS层208或者操作系统API软件206中。操作系统应用程序通常不能由用户移除,然而其他应用程序通常可以由用户安装或移除。在一些实施例中,操作系统应用程序包括应用程序启动器。在一些实施例中,操作系统应用程序包括设置应用程序(例如,用于显示/修改系统设置或设备/全局内部状态134的一个或多个值的应用程序,图1C)。在一些实施例中,操作系统应用程序包括辅助模块127。在一些实施例中,电子设备具有程序层次结构中的仅三个软件应用程序应用程序启动器、设置应用程序和一个其他应用程序(通常是对应于在电子设备102的触摸屏156上显示的一个或多个视图的软件应用程序)。电子设备至少显示(808)第二软件应用程序的一个或多个视图的子集(例如,网页浏览器应用程序视图712-6,图7G)。在一些实施例中,显示包括(810)至少显示第二软件应用程序的一个或多个视图的子集,而不显示第一软件应用程序的任何视图。例如,在图7G中,不显示应用程序启动器的视图(例如,始位画面708)。根据一些实施例,显示包括(812)至少显示第二软件应用程序的一个或多个视图 的子集,而不显示任何其他应用程序的视图。例如,在图7G中,只显示网页浏览器应用程序的一个或多个视图。在至少显示第二软件应用程序的一个或多个视图的子集时,电子设备检测(814)触摸敏感显示器上的触摸输入序列(例如,姿态703,其包括触摸放下事件和触摸提起(touch-up)事件;或另一个姿态,其包括手指接触707、709和711的触摸放下、手指接触707,709和711跨触摸屏156的移动以及手指接触707、709和711的抬离)。触摸输入序列包括一个或多个触摸输入的第一部分以及第一部分之后的一个或多个触摸输入的第二部分。如本文使用的,术语“序列”是指其中发生一个或多个触摸事件的排序。例如,在包括手指接触707、709和711的触摸输入序列中,第一部分可以包括手指接触707、709和711的触摸放下,而第二部分可以包括手指接触707、709和711的移动以及手指接触707、709和711的抬离。在一些实施例中,检测发生(816)在当一个或多个触摸输入的第一部分中的触摸输入至少部分地交叠于第二软件应用程序的显示的视图中的至少一个时。在一些实施例中,尽管触摸输入至少部分地交叠于第二软件应用程序的显示的视图中的至少一个,但第一软件应用程序仍接收一个或多个触摸输入的第一部分。例如,应用程序启动器接收网页浏览器的显示的视图上的触摸输入的第一部分(图7G),尽管应用程序启动器没有被显示。在检测触摸输入序列的第一阶段期间(818),电子设备传送(820) —个或多个触摸输入的第一部分到第一软件应用程序和第二软件应用程序(例如,使用事件调度器模块315,图3D),从第一组中的姿态识别器中认定(822)识别一个或多个触摸输入的第一部分的一个或多个匹配的姿态识别器(例如,使用第一组中的每个姿态识别器(通常是,每个接收姿态识别器)中的事件比较器3033,图3D),以及用对应于一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理(824) —个或多个触摸输入的第一部分(例如,激活对应的事件处理器319,图3D)。在一些实施例中,检测触摸输入序列的第一阶段是检测一个或多个触摸输入的第一部分的阶段。关于传送操作(820),在一些实施例中,第一软件应用程序在接收到一个或多个触摸输入的第一部分之后,传送一个或多个触摸输入的第一部分到至少第一组中的姿态识别器的子集,并且第二软件应用程序在接收到一个或多个触摸输入的第一部分之后,传送一个或多个触摸输入的第一部分到至少第二组中的姿态识别器的子集。在一些实施例中,电子设备或电子设备中的事件调度器模块(例如315,图3D)传送一个或多个触摸输入的第一部分到至少第一组和第二组中的姿态识别器的子集(例如,事件调度器模块315传送一个或多个触摸输入的第一部分到姿态识别器516-1、516-2和516-4,图3F)。例如,当在触摸屏156上检测到包括手指接触707、709和711的手指姿态时(图7G),传送触摸放下事件到应用程序启动器的一个或多个姿态识别器以及网页浏览器应用程序的一个或多个姿态识别器。在另一个例子中,轻敲姿态703的触摸放下事件(图7G)传送到应用程序启动器的一个或多个姿态识别器以及网页浏览器应用程序的一个或多个姿态识别器。在一些实施例中,当第一组中没有姿态识别器识别一个或多个触摸输入的第一部分时(例如,检测到的事件和姿态定义之间不匹配或者姿态没有完成),处理一个或多个触摸输入的第一部分包括执行空操作(例如,设备不更新显示的用户界面)。 在一些实施例中,电子设备从第二组中的姿态识别器中认定识别一个或多个触摸输入的第一部分的一个或多个匹配的姿态识别器。电子设备使用对应于一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的第一部分。例如,响应于传送到网页浏览器应用程序的一个或多个姿态识别器的轻敲姿态703 (图7G),网页浏览器应用程序中的匹配的姿态识别器(例如,识别书签图标上的轻敲姿态的姿态识别器,图7G)通过在触摸屏156上显示书签列表而处理轻敲姿态703。在一些实施例中,在第一阶段之后,在检测触摸输入序列的第二阶段期间,电子设备传送(826,图SB) —个或多个触摸输入的第二部分到第一软件应用程序,而不传送一个或多个触摸输入的第二部分到第二软件应用程序(例如,使用事件调度器模块315,图3D);从一个或多个匹配的姿态识别器中认定识别触摸输入序列的第二匹配的姿态识别器(例如,使用每个匹配的姿态识别器中的事件比较器3033,图3D);以及使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列。在一些实施例中,检测触摸输入序列的第二阶段是检测一个或多个触摸输入的第二部分的阶段。例如,当在触摸屏156上检测到包括手指接触707、709和711的手指姿态时(图7G),传送触摸移动和抬离事件到应用程序启动器的一个或多个姿态识别器,而不传送该触摸事件到网页浏览器应用程序。电子设备认定应用程序启动器的匹配的姿态识别器(例如,三指上挥击姿态识别器),并使用对应于三指上挥击姿态识别器的姿态处理器来处理该触摸输入序列。在第二阶段期间,第二软件应用程序没有接收到一个或多个触摸输入的第二部分,这通常是因为第一软件应用程序具有超过第二软件应用程序的优先权(例如,在程序层次结构中)。因此,在一些实施例中,当第一软件应用程序中的姿态识别器识别一个或多个触摸输入的第一部分时,第一软件应用程序中的一个或多个姿态识别器排他地接收一个或多个触摸输入的第二后续部分。另外,在第二阶段期间,第二软件应用程序可以不接收一个或多个触摸输入的第二部分,因为第二软件应用程序中没有姿态识别器匹配一个或多个触摸输入的第一部分。在一些实施例中,使用对应于各自匹配的姿态识别器的姿态处理器处理触摸输入序列包括(834)在触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标,以及同时至少显示第二软件应用程序的一个或多个视图的子集。例如,图7H中,预定区域716中的应用程序图标5004对应于电子设备的同时打开的应用程序。在一些实施例中,根据打开的应用程序的序列,显示预定区域716中的应用程序图标5004。在图7H中,电子设备同时显示预定区域716和网页浏览器应用程序视图712-6的子集。在一些实施例中,使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列包括(828)显示第一软件应用程序的一个或多个视图。例如,响应于多指捏姿态(图7R),电子设备显示始位画面708(图7A)。在一些实施例中,显示第一软件应用程序的一个或多个视图包括显示第一软件应用程序的一个或多个视图,而不同时显示对应于其他任何软件应用程序的视图(例如,图7A)。在一些实施例中,使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输 入序列包括(830)将第二软件应用程序的一个或多个视图的显示替换为第一软件应用程序的一个或多个视图的显示(例如,显示始位画面708,图7A)。因此,在显示第一软件应用程序的一个或多个视图之后,停止显示第二软件应用程序的一个或多个视图。在一些实施例中,将第二软件应用程序的一个或多个视图的显示替换为第一软件应用程序的一个或多个视图的显示包括,显示第一软件应用程序的一个或多个视图,而不同时显示对应于其他任何软件应用程序的视图(图7A)。在一些实施例中,电子设备同时执行(832)第一软件应用程序、第二软件应用程序以及第三软件应用程序。在一些实施例中,使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列包括,将第二软件应用程序的一个或多个显示的视图替换为第三软件应用程序的一个或多个视图。例如,响应于多指挥击姿态,电子设备将网页浏览器应用程序视图712-6的显示替换为天气应用程序视图712-5的显示(图7J-7K)。在一些应用程序中,将第二软件应用程序的一个或多个显示的视图替换为第三软件应用程序的一个或多个视图包括,显示第三软件应用程序的一个或多个视图,而不同时显示对应于其他任何软件应用程序的视图。在一些实施例中,第三软件应用程序在打开的应用程序的序列中紧接在第二软件应用程序之后。在一些实施例中,使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列包括启动设置应用程序。例如,响应于十指轻敲姿态,电子设备启动设置应用程序。注意,关于方法800的上述过程的细节也以类似的方式适用于下面描述的方法900。为了简洁,下面将不再重复这些细节。图9A-9C是例示了根据一些实施例的事件识别方法900的流程图。方法900在具有触摸敏感显示器的电子设备中执行(902)。所述电子设备配置成至少执行第一软件应用程序和第二软件应用程序。第一软件应用程序包括第一组一个或多个姿态识别器,第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有相对应的姿态处理器。在一些实施例中,第一组一个或多个姿态识别器不同于第二组一个或多个姿态识别器。方法900允许用户使用姿态来控制当前没有在电子设备的显示器上显示的隐藏的打开的应用程序(例如,第一软件应用程序),诸如后台应用程序、挂起的应用程序或者休眠的应用程序。因此,用户可以执行不是由当前显示在电子设备的显示器上的应用程序(例如,第二软件应用程序)提供的而是由当前打开的应用程序中的一个提供的操作(例如,对于隐藏的应用程序启动器软件应用程序使用姿态来显示始位画面或切换到下一个软件应用程序)。在一些实施例中,第一软件应用程序(904)是应用程序启动器(例如,出发点)。在一些实施例中,第一软件应用程序是(906)操作系统应用程序。在方法900的以下描述中,应用程序启动器用作示例性的第一软件应用程序,而网页浏览器应用程序用作示例性的第二软件应用程序。电子设备显示(908)第一组一个或多个视图(例如,网页浏览器应用程序视图712-6,图7G)。第一组一个或多个视图至少包括第二软件应用程序的一个或多个视图的子集。例如,第二软件应用程序可以具有多个应用程序视图(例如,应用程序133-1的应用程序视图317,图3D),并且电子设备显示多个应用程序视图中的至少一个视图。在一些实施例中,子集包括第二软件应用程序的全部一个或多个视图。
在一些实施例中,显示第一组一个或多个视图包括(910)显示第一组一个或多个视图而不显示第一软件应用程序的任何视图(例如,网页浏览器应用程序视图712-6,图7G)。根据一些实施例,显示第一组一个或多个视图包括(912)显示第一组一个或多个视图而不显示任何其他软件应用程序的视图。例如,在图7G中,只显示网页浏览器应用程序的一个或多个视图。在显示第一组一个或多个视图时,电子设备检测(914)触摸敏感显示器上的触摸输入序列,并确定(920)是否第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分。例如,在显示网页浏览器应用程序视图712-6时(图7G),设备确定用于应用程序启动器的姿态识别器是否识别触摸输入的第一部分。触摸输入序列包括一个或多个触摸输入的第一部分以及第一部分之后的一个或多个触摸输入的第二部分(即,第二部分在第一部分之后)。在一些实施例中,触摸输入序列至少部分地交叠(916)于第二软件应用程序的一个或多个显示的视图中的至少一个。例如,应用程序启动器接收网页浏览器应用程序视图712-6(图7G)上的触摸输入的第一部分,尽管应用程序启动器没有被显示。在一些实施例中,在确定第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分之前,电子设备同时传送(918) —个或多个触摸输入的第一部分到第一软件应用程序和第二软件应用程序。例如,在确定应用程序启动器中的至少一个姿态识别器识别触摸放下事件之前,应用程序启动器和网页浏览器应用程序二者都接收手指接触707、709和711的触摸放下事件(图7G)。根据关于第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分的确定(922,图9B),电子设备传送(924)触摸输入序列到第一软件应用程序而不传送触摸输入序列到第二软件应用程序,确定(926)是否第一组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列,并根据关于第一组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列的确定,使用第一组一个或多个姿态识别器中的识别触摸输入序列的至少一个姿态识别器来处理(928)触摸输入序列。
例如,当在触摸屏156上检测到三个手指接触707、709和711的触摸放下和触摸移动(图7G)时,电子设备认定至少应用程序启动器的三指上挥击姿态识别器识别触摸输入。此后,电子设备传送随后的触摸事件(例如,手指接触707、709和711的抬离)到应用程序启动器,而不传送随后的触摸事件到网页浏览器应用程序。电子设备进一步认定三指上挥击姿态识别器识别触摸输入序列,并使用对应于三指上挥击姿态识别器的姿态处理器来处理触摸输入序列。在一些实施例中,使用第一组一个或多个姿态识别器中的至少一个姿态识别器来处理触摸输入序列包括(930)显示第一软件应用程序的一个或多个视图。例如,响应于检测到多指捏姿态(图7R),电子设备显示始位画面708 (图7A)。在一些实施例中,使用第一组一个或多个姿态识别器中的至少一个姿态识别器来处理触摸输入序列包括(932)将第一组一个或多个视图的显示替换为第一软件应用程序的一个或多个视图的显示(例如,显示始位画面708,图7A,始位画面708是应用程序启动器软件应用程序的一部分)。 在一些实施例中,电子设备同时执行第一软件应用程序、第二软件应用程序以及第三软件应用程序;并且使用第一组一个或多个姿态识别器中的至少一个姿态识别器来处理触摸输入序列包括(934)将第一组一个或多个视图替换为第三软件应用程序的一个或多个视图。在一些实施例中,将第一组一个或多个视图替换为第三软件应用程序的一个或多个视图包括,显示第三软件应用程序的一个或多个视图,而不同时显示对应于其他任何软件应用程序的视图。例如,响应于多指挥击姿态,电子设备将网页浏览器应用程序视图712-6的显示替换为天气应用程序视图712-5的显示(图7J-7K)。在一些实施例中,使用第一组一个或多个姿态识别器中的至少一个姿态识别器来处理触摸输入序列包括(936),在触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标,以及同时至少显示第一组一个或多个视图的子集。例如,在图7H中,预定区域716中的应用程序图标5004对应于电子设备的同时打开的应用程序。在一些实施例中,根据打开的应用程序的序列,显示预定区域716中的应用程序图标5004。在图7H中,电子设备同时显示预定区域716和网页浏览器应用程序视图712-6的子集。根据关于第一组一个或多个姿态识别器中没有姿态识别器识别一个或多个触摸输入的第一部分的确定(938,图9C),电子设备传送(940)触摸输入序列到第二软件应用程序,确定(942)是否第二组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列,并且根据关于第二组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列的确定,使用第二组一个或多个姿态识别器中的识别触摸输入序列的至少一个姿态识别器来处理(944)触摸输入序列。例如,当一个或多个触摸输入的第一部分是轻敲姿态(例如,703,图7G),并且应用程序启动器中没有姿态识别器识别该轻敲姿态时,电子设备传送所述轻敲姿态到网页浏览器应用程序,并确定是否网页浏览器应用程序的至少一个姿态识别器识别该轻敲姿态。当网页浏览器应用程序(或网页浏览器应用程序的姿态识别器)识别书签图标上的轻敲姿态703时,电子设备使用对应的姿态处理器来处理轻敲姿态703。图10A-10B是例示了根据一些实施例的事件识别方法的流程图。注意,关于方法600、800和900的上述过程的细节也以类似的方式适用于下面描述的方法1000。为了简洁,
下面将不再重复这些细节。方法1000在具有内部状态(例如,设备/全局内部状态134,图1C)的电子设备中执行(1002)。电子设备配置成执行包括具有多个视图的视图层次结构的软件。在方法1000中,至少一个姿态识别器具有多个姿态定义。这有助于姿态识别器在截然不同的操作模式下工作。例如,设备可以具有正常操作模式和辅助操作模式。在正常操作模式下,下一个应用程序姿态用于在应用程序之间移动,并且该下一个应用程序姿态定义为三指左挥击姿态。在辅助操作模式下,三指左挥击姿态用于执行不同的功能。由此,在辅助操作模式下需要一个不同于三指左挥击的姿态以对应于下一个应用程序姿态(例如,在辅助操作模式下的四指左挥击姿态)。通过使多个姿态定义关联到下一个应用程序姿态,设备能够基于当前的操作模式为下一个应用程序姿态选择姿态定义中的一个。这提供了在不同的操作模式下使用姿态识别器的灵活性。在一些实施例中,带多个姿态定义的多个姿态识别器基于操作模式被调节(例如,在正常操作模式下由三个手指执行的姿态在辅助操作模式下由四个手指执行)。 在一些实施例中,内部状态包括(1016)用于辅助操作模式的一个或多个设置(例如,该内部状态指示设备是否运行于辅助操作模式下)。在一些实施例中,软件是(1018)或者包括应用程序启动器(例如,出发点)。在一些实施例中,软件是(1020)或者包括操作系统应用程序(例如,设备的集成了操作系统的应用程序)。电子设备显示(1004)视图层次结构中的一个或多个视图。电子设备执行(1006) —个或多个软件元素。每个软件元素与特定的视图相关联(例如,应用程序133-1具有一个或多个应用程序视图317,图3D),且每个特定视图包括一个或多个事件识别器(例如,事件识别器325,图3D)。每个事件识别器具有基于一个或多个子事件的一个或多个事件定义以及事件处理器(例如,姿态定义3035,和对事件传送信息3039中对应事件处理器的参考,图3D)。事件处理器指定对目标的动作,并被配置成响应于事件识别器检测到与一个或多个事件定义中的特定事件定义相对应的事件而发送动作到目标(例如,当事件识别器具有多个事件定义时,从一个或多个事件定义中选择出的事件定义,或者当事件识别器仅仅具有一个事件定义时的唯一事件定义)。电子设备检测(1008) —个或多个子事件序列。电子设备认定(1010)视图层次结构的视图中的一个作为点击视图。该点击视图确立视图层次结构中的哪些视图是有效涉及的视图。电子设备传送(1012)各自的子事件到用于视图层次结构中每一个有效涉及的视图的事件识别器。在一些实施例中,视图层次结构中的一个或多个有效涉及的视图包括点击视图。在一些实施例中,视图层次结构中的一个或多个有效涉及的视图包括默认视图(例如,应用程序启动器的始位画面708)。用于视图层次结构中有效涉及的视图的至少一个事件识别器具有(1014)多个事件定义,并根据电子设备的内部状态选择出该多个事件定义中的一个。例如,事件识别器325-1具有多个姿态定义(例如,3037-1和3037-2,图3D)。在一些实施例中,事件识别器325-1基于设备/全局内部状态134 (图1C)中的一个或多个值,选择事件识别器325-1中的多个姿态定义中的一个。然后,根据所选择的事件定义,在处理子事件序列中下一个子事件之前,至少一个事件识别器处理各自的子事件。在一些实施例中,用于视图层次结构中有效涉及的视图的两个或更多个事件识别器中的每一个具有多个事件定义,并根据电子设备的内部状态选择出该多个事件定义中的一个。在这样的实施例中,根据所选择的事件定义,在处理子事件序列中下一个子事件之前,两个或更多个事件识别器中的至少一个处理各自的子事件。例如,图7J-7K例示了开始显示下一个应用程序的应用程序视图的下一个应用程序姿态。在一些实施例中,应用程序启动器包括下一个应用程序姿态识别器,该下一个应用程序姿态识别器包括匹配三指左挥击姿态的姿态定义。出于该例的目的,假设该下一个应用程序姿态识别器还包括列应于四指左挥击姿态的姿态定义。当设备/全局内部状态134中的一个或多个值被设置为默认值时,该下一个应用程序姿态识别器使用三指左挥击姿态定义,而不使用四指左挥击姿态定义。当设备/全局内部状态134中的一个或多个值被修改(例如,通过使用辅助模块127,图1C)时,该下一个应用程序姿态识别器使用四指左挥击 姿态定义,而不使用三指左挥击姿态定义。因此,在该例中,当设备/全局内部状态134中的一个或多个值被修改时,四指左挥击姿态开始显示下一个应用程序的应用程序视图。类似地,图7R-7S例示了,响应于检测到五指捏姿态,始位画面姿态开始以缩小比例显示网页浏览器应用程序视图712-6以及至少显示始位画面708的一部分。基于设备/全局内部状态134和始位画面姿态识别器中的姿态定义,四指捏姿态、三指捏姿态或任何其他适合的姿态可以用于开始以缩小比例显示网页浏览器应用程序视图712-6以及至少显示始位画面708的一部分。在一些实施例中,多个事件定义包括(1020)对应于具有第一手指个数的第一挥击姿态的第一事件定义以及对应于具有与第一手指个数不同的第二手指个数的第二挥击姿态的第二事件定义。例如,各自姿态识别器的多个事件定义可以包括三指挥击姿态和四指挥击姿态。在一些实施例中,多个事件定义包括与具有第一手指个数的第一类型的第一姿态相对应的第一事件定义以及与具有和第一手指个数不同的第二手指个数的第一类型的第二姿态相对应的第二事件定义(例如,一个手指的轻敲姿态和两个手指的轻敲姿态、两个手指的捏姿态和三个手指的捏姿态等等)。在一些实施例中,多个事件定义包括对应于第一姿态的第一事件定义以及对应于和第一姿态不同的第二姿态的第二事件定义(例如,挥击姿态和捏姿态、挥击姿态和轻敲姿态等等)。在一些实施例中,根据电子设备的内部状态以及(由电子设备作出的)关于各自的事件定义不对应于除了各自的事件识别器之外的用于有效涉及的视图的任何事件识别器的事件定义的确定,针对各自的事件识别器选择(1022)多个事件定义中的各自的定义。例如,各自的姿态识别器可以具有两个事件定义与通常用于正常操作模式的三指左挥击姿态相对应的第一事件定义,以及与通常用于辅助操作模式的四指左挥击姿态相对应的第二事件定义。当以使该电子设备运行在辅助模式下的方式设置电子设备的内部状态时,电子装备确定用于第二事件定义的四指左挥击姿态是否被用于有效涉及的视图的任何其他事件识别器使用。如果用于有效涉及的视图的任何其他事件识别器没有使用四指左挥击姿态,那么为辅助操作模式下的各自的姿态识别器选择该四指左挥击姿态。另一方面,如果用于有效涉及的视图的任何其他事件识别器使用了四指左挥击姿态,那么即使在辅助操作模式中也使用三指左挥击姿态用于各自的姿态识别器。这样防止了两个或更多个姿态识别器不期望地响应于同一个姿态。在一些实施例中,根据电子设备的内部状态以及(由电子设备作出的)关于各自的事件定义不对应于除了各自的事件识别器之外的任何事件识别器(包括用于有效涉及的视图以及任何其他视图的事件识别器)的事件定义的确定,针对一个各自的事件识别器选择多个事件定义中的一个各自的事件定义。在一些实施例中,用于视图层次结构中有效涉及的视图的两个或更多个事件识别器中的每一个都具有(1024)各自的多个事件定义,根据电子设备的内部状态以及(由电子设备作出的)关于各自的事件定义不对应于针对除了各自的事件识别器之外的具有两个或更多个事件定义的任何事件识别器选择的任何事件定义的确定,针对一个各自的事件识别器选择各自的多个事件定义中的一个各自的事件定义。
例如,有效涉及的视图可以具有第一姿态识别器和第二姿态识别器。在该例中,第一姿态识别器具有与通常用于正常操作模式的三指左挥击姿态相对应的第一事件定义,以及与通常用于辅助操作模式的四指左挥击姿态相对应的第二事件定义。第二姿态识别器具有与通常用于正常操作模式的两指左挥击姿态相对应的第三事件定义,以及与通常用于辅助操作模式的四指左挥击姿态相对应的第四事件定义。当以使该电子设备运行在辅助模式下的方式设置电子设备的内部状态时,电子设备确定是否针对具有两个或更多个事件定义的任何其他事件识别器(例如,第二事件姿态识别器)选择满足第二事件定义的四指左挥击姿态。如果没有针对具有两个或更多个事件定义的任何其他事件识别器选择四指左挥击姿态,那么针对辅助操作模式下的第一姿态识别器选择该四指左挥击姿态。结果是,没有针对第二姿态识别器选择四指左挥击姿态,因为已经针对第一姿态识别器选择了四指左挥击姿态。代替地,针对第二姿态识别器选择两指左挥击姿态,因为没有针对包括第一姿态识别器在内的具有两个或更多个事件定义的任何其他姿态识别器选择两指左挥击姿态。在另一个例子中,有效涉及的视图具有第一姿态识别器和第三姿态识别器而不具有第二姿态识别器。第三姿态识别器具有通常用于正常操作模式的第三事件定义(对应于两指左挥击姿态)以及对应于通常用于辅助操作模式的三指左挥击姿态的第五事件定义。在辅助操作模式下,可针对第三姿态识别器选择三指左挥击姿态,因为三指左挥击姿态并没有针时具有两个或更多个事件定义的其它任何姿态识别器选择。尽管上述例子是关于多指左挥击姿态描述的,但是上述方法适用于任何方向的挥击姿态(例如,右挥击姿态、上挥击姿态、下挥击姿态和/或任何斜挥击姿态)或者任何其他种类的姿态(例如,轻敲姿态、捏姿态、散开姿态等等)。在一些实施例中,根据所选择的事件定义处理各自的子事件包括(1026)显示与包括视图层次结构的软件不同的第一软件应用程序的一个或多个视图(例如,同时至少显示包括软件的一个或多个视图的用户界面712-6的一部分以及始位画面708的一部分,图7S)。在一些实施例中,至少一个事件识别器通过将视图层次结构的一个或多个视图的显示替换为与包括视图层次结构的软件不同的第一软件应用程序的一个或多个视图(例如,始位画面708,图7A)的显示而处理(1028)各自的子事件。在一些实施例中,至少一个事件识别器通过以下操作处理(1030)各自的子事件在电子设备中的显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标;以及同时至少显示视图层次结构的一个或多个视图的子集(例如,打开的应用程序图标5004和用户界面712-6的至少一部分,图7H)。例如,响应于正常操作模式下的三指上挥击姿态和辅助操作模式下的四指上挥击姿态,电子设备同时显示该组打开的应用程序图标以及至少视图层次结构的一个或多个视图的子集。根据一些实施例,图11显示了根据上述的发明原理配置的电子设备1100的功能框图。设备的功能块可以由硬件、软件或软件和硬件的结合来实现,用以执行本发明的原理。本领域技术人员理解,图11中描述的功能块可以合并或划分成子模块,用以实现上述的本发明的原理。因此,本文的描述可以支持本文描述的功能块的任何可能的合并、划分或进一步定义。如图11所示,电子设备1100包括配置接收触摸输入的触摸敏感显示单元1102 ; 以及稱接到触摸敏感显示单元1102的处理单元1106。在一些实施例中,处理单元1106包括执行单元1108、显示使能单元1110、检测单元1112、传送单元1114、认定单元1116以及触摸输入处理单元1118。处理单元1106配置成至少执行第一软件应用程序和第二软件应用程序(例如,使用执行单元1108)。第一软件应用程序包括第一组一个或多个姿态识别器,且第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有相对应的姿态处理器。处理单元1106配置成使得能够至少显示第二软件应用程序的一个或多个视图的子集(例如,使用显示使能单元1110,在触摸敏感显示单元1102上)。处理单元1106配置成当至少显示第二软件应用程序的一个或多个视图的子集时检测触摸敏感显示单元1102上的触摸输入序列(例如,使用检测单元1112)。触摸输入序列包括一个或多个触摸输入的第一部分以及第一部分之后的一个或多个触摸输入的第二部分。处理单元1106配置成,在检测触摸输入序列的第一阶段期间传送一个或多个触摸输入的第一部分到第一软件应用程序和第二软件应用程序(例如,使用传送单元1114);从第一组中的姿态识别器中认定识别一个或多个触摸输入的第一部分的一个或多个匹配的姿态识别器(例如,使用认定单元1116);以及用对应于一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的第一部分(例如,使用触摸输入处理单元1118)。在一些实施例中,处理单元1106配置成,当一个或多个触摸输入的第一部分中的触摸输入至少部分地交叠于第二软件应用程序的显示的视图中的至少一个时,检测触摸输入序列(例如,使用检测单元1112)。在一些实施例中,处理单元1106配置成,使得能够至少显示第二软件应用程序的一个或多个视图的子集,而不显示第一软件应用程序的任何视图(例如,使用显示使能单元1110,在触摸敏感显示单元1102上)。在一些实施例中,处理单元1106配置成,使得能够至少显示第二软件应用程序的一个或多个视图的子集,而不显示任何其他应用程序的视图(例如,使用显示使能单元1110,在触摸敏感显示单元1102上)。在一些实施例中,处理单元1106配置成,在第一阶段之后,在检测触摸输入序列的第二阶段期间传送一个或多个触摸输入的第二部分到第一软件应用程序,而不传送一个或多个触摸输入的第二部分到第二软件应用程序(例如,使用传送单元1114);从一个或多个匹配的姿态识别器中认定识别触摸输入序列的第二匹配的姿态识别器(例如,使用认定单元1116);以及使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列(例如,使用触摸输入处理单元1118)。在一些实施例中,处理单元1106配置成,通过使得能够显示第一软件应用程序的一个或多个视图(例如,使用显示使能单元1110,在触摸敏感显示单元1102上)而使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列。在一些实施例中,处理单元1106配置成,通过将第二软件应用程序的一个或多个视图的显示替换为第一软件应用程序的一个或多个视图的显示(例如,使用显示使能单元
1110,在触摸敏感显示单元1102上)而使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列。在一些实施例中,处理单元1106配置成同时执行第一软件应用程序、第二软件应用程序以及第三软件应用程序(例如,使用执行单元1108);以及通过将第二软件应用程序的一个或多个显示的视图替换为第三软件应用程序的一个或多个视图(例如,使用显示使能单元1110,在触摸敏感显示单元1102上)而使用对应于各自匹配的姿态识别器的姿态处理器来处理触摸输入序列。在一些实施例中,处理单元1106配置成使得能够在触摸敏感显示单元1102的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标(例如,使用显示使能单元1110);并使得能够至少显示第二软件应用程序的一个或多个视图的子集(例如,使用显示使能单元1110)。在一些实施例中,第一软件应用程序是应用程序启动器。在一些实施例中,第一软件应用程序是操作系统应用程序。根据一些实施例,图12显示了根据上述的本发明的原理配置的电子设备1200的功能框图。设备的功能块可以由硬件、软件或软件和硬件的结合来实现,用以执行本发明的原理。本领域技术人员理解,图12中描述的功能块可以合并或划分成子模块,用以实现上述的本发明的原理。因此,本文的描述可以支持本文描述的功能块的任何可能的合并、划分或进一步定义。如图12所示,电子设备1200包括配置成接收触摸输入的触摸敏感显示单元1202 ;以及稱接到触摸敏感显示单元1202的处理单元1206。在一些实施例中,处理单元1206包括执行单元1208、显示使能单元1210、检测单元1212、确定单元1214、传送单元1216以及触摸输入处理单元1218。处理单元1206配置成,至少执行第一软件应用程序和第二软件应用程序(例如,使用执行单元1208)。第一软件应用程序包括第一组一个或多个姿态识别器,且第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器。各自的姿态识别器具有相对应的姿态处理器。处理单元1206配置成使得能够显示第一组一个或多个视图(例如,使用显示使能单元1210)。第一组一个或多个视图至少包括第二软件应用程序的一个或多个视图的子集。处理单元1206配置成,当显示第一组一个或多个视图时,检测触摸敏感显示单元上的触摸输入序列(例如,使用检测单元1212)。触摸输入序列包括一个或多个触摸输入的第一部分以及第一部分之后的一个或多个触摸输入的第二部分。处理单元1206配置成,确定是否第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分(例如,使用确定单元1214)。处理单元1206配置成,根据关于第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分的确定传送触摸输入序列到第一软件应用程序,而不传送触摸输入序列到第二软件应用程序(例如,使用传送单元1216);确定是否第一组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列(例如,使用确定单元1214)。处理单元1206配置成,根据关于第一组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列的确定,使用第一组一个或多个姿态识别器中的识别触摸输入序列的至少一个姿态识别器来处理触摸输入序列(例如,使用触摸输入处理单元1218)。处理单元1206配置成,根据关于第一组一个或多个姿态识别器中没有姿态识别器识别一个或多个触摸输入的第一部分的确定传送触摸输入序列到第二软件应用程序(例如,使用传送单元1216);并确定是否第二组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列(例如,使用确定单元1214)。处理单元1206配置成,根据关于第二组一个或多个姿态识别器中的至少一个姿态识别器识别触摸输入序列的确定,使用第二组一个或多个姿态识别器中的识别触摸输入序列的至少一个姿态识别器来处理触摸输入序列(例如,使用触摸输入处理单元1218)。 在一些实施例中,触摸输入序列至少部分地交叠于第二软件应用程序的一个或多个显示的视图中的至少一个。在一些实施例中,处理单元1206配置成,使得能够显示第一组一个或多个视图,而不显示第一软件应用程序的任何视图(例如,使用显示使能单元1210,在触摸敏感显示单元1202上)。在一些实施例中,处理单元1206配置成,使得能够显示第一组一个或多个视图,而不显示任何其他软件应用程序的视图(例如,使用显示使能单元1210,在触摸敏感显示单元1202上)。在一些实施例中,在确定第一组一个或多个姿态识别器中的至少一个姿态识别器识别一个或多个触摸输入的第一部分之前,处理单元1206配置成,同时传送一个或多个触摸输入的第一部分到第一软件应用程序和第二软件应用程序(例如,使用传送单元1216)。在一些实施例中,第一软件应用程序是应用程序启动器。在一些实施例中,第一软件应用程序是操作系统应用程序。在一些实施例中,处理单元1206配置成,通过使得能够显示第一软件应用程序的一个或多个视图(例如,使用显示使能单元1208,在触摸敏感显示单元1202上),而使用第一组一个或多个姿态识别器中的至少一个姿态识别器,来处理触摸输入序列。在一些实施例中,处理单元1206配置成,通过将第一组一个或多个视图的显示替换为第一软件应用程序的一个或多个视图的显示(例如,使用显示使能单元1208,在触摸敏感显示单元1202上),而使用第一组一个或多个姿态识别器中的至少一个姿态识别器,来处理触摸输入序列。在一些实施例中,处理单元1206配置成,同时执行第一软件应用程序、第二软件应用程序以及第三软件应用程序(例如,使用执行单元1208)。处理单元1206配置成,通过将第一组一个或多个视图替换为第三软件应用程序的一个或多个视图(例如,使用显示使能单元1210,在触摸敏感显示单元1202上)而使用第一组一个或多个姿态识别器中的至少一个姿态识别器来处理触摸输入序列。在一些实施例中,处理单元1206配置成使得能够在触摸敏感显示单元1202的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标(例如,使用显示使能单元1210);并同时至少显示第一组一个或多个视图的子集(例如,使用显示使能单元1210)。根据一些实施例,图13显示了根据上述的本发明原理配置的电子设备1300的功能框图。设备的功能块可以由硬件、软件或软件和硬件的结合来实现,用以执行本发明的原理。本领域技术人员理解,图13中描述的功能块可以合并或划分成子模块,用以实现上述的本发明的原理。因此,本文的描述可以支持本文描述的功能块的任何可能的合并、划分或进一步定义。 如图13所示,电子设备1300包括配置成显示一个或多个视图的显示单元1302 ;配置成存储内部状态的存储器单元1304 ;以及耦接到显示单元1302和存储器单元1304的处理单元1306。在一些实施例中,处理单元1306包括执行单元1308、显示使能单元1310、检测单元1312、认定单元1314、传送单元1316以及事件/子事件处理单元1318。在一些实施例中,处理单元1306包括存储器单元1304。处理单元1306配置成执行包括具有多个视图的视图层次结构的软件(例如,使用执行单元1308);使得能够显示视图层次结构中的一个或多个视图(例如,使用显示使能单元1310,在显示单元1302上);以及执行一个或多个软件元素(例如,使用执行单元1308)。每个软件元素与特定的视图相关联,且每个特定视图包括一个或多个事件识别器。每个事件识别器具有基于一个或多个子事件的一个或多个事件定义,以及事件处理器。事件处理器指定对目标的动作,并被配置成响应于事件识别器检测到与一个或多个事件定义中的特定事件定义相对应的事件而发送动作到目标。处理单元1306配置成检测一个或多个子事件的序列(例如,使用检测单元1312);以及认定视图层次结构中的一个视图作为点击视图(例如,使用认定单元1314)。点击视图确立视图层次结构中的哪些视图是有效涉及的视图。处理单元1306配置成,传送各自的子事件到用于视图层次结构中的每个有效涉及的视图,的事件识别器(例如,使用传送单元1316)。用于视图层次结构中有效涉及的视图的至少一个事件识别器具有多个事件定义,并根据电子设备的内部状态选择该多个事件定义中的一个,并且根据所选择的事件定义,在处理子事件序列中的下一个子事件之前,至少一个事件识别器处理各自的子事件(例如,使用事件/子事件处理单元1318)。在一些实施例中,多个事件定义包括与具有第一手指个数的第一挥击姿态相对应的第一事件定义,以及与具有和第一手指个数不同的第二手指个数的第二挥击姿态相对应的第二事件定义。在一些实施例中,内部状态包括用于辅助操作模式的一个或多个设置。在一些实施例中,根据电子设备的内部状态以及关于各自的事件定义不对应于除了各自的事件识别器之外的用于有效涉及的视图的任何事件识别器的事件定义的确定,针对一个各自的事件识别器选择多个事件定义中的一个各自的事件定义。在一些实施例中,用于视图层次结构中有效涉及的视图的两个或更多个事件识别器中的每一个都具有各自的多个事件定义,根据电子设备的内部状态以及关于各自的事件定义不对应于针对除了各自的事件识别器之外的具有两个或更多个事件定义的任何事件识别器选择的任何事件定义的确定,针对一个各自的事件识别器选择各自的多个事件定义中的一个各自的事件定义。在一些实施例中,处理单元1306配置成,通过使得能够显示与包括视图层次结构的软件不同的第一软件应用程序的一个或多个视图(例如,使用显示使能单元1310,在显示单元1302上),根据所选择的事件定义来处理各自的子事件。在一些实施例中,处理单元1306配置成,通过将视图层次结构的一个或多个视图的显示替换为与包括视图层次结构的软件不同的第一软件应用程序的一个或多个视图的显示(例如,使用显示使能单元1310,在显示单元1302上),来处理各自的子事件。在一些实施例中,处理单元1306配置成通过以下操作来处理各自的子事件使得能够在显示单元1302的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标(例如,使用显示使能单元1310);以及使得能够同时至少显示视图层次结构中的一个或多个视图的子集(例如,使用显示使能单元1310)。在一些实施例中,软件是应用程序启动器。 在一些实施例中,软件是操作系统应用程序。出于解释目的,关于具体实施例给出了上面的描述。然而,上述例示性的讨论并不旨在穷举,或要将本发明局限于所公开的确切形式。根据上述教导,许多修改和变体都是可能的。所选择与所描述的实施例是为了最佳地说明本发明的原理及其实际应用,由此能使本领域技术人员最佳地使用本发明,以及使用具有与所设想的实际运用相适合的各种修改的不同实施例。
权利要求
1.一种电子设备,包括 触摸敏感显示器,配置成接收触摸输入;以及 处理器,耦接到所述触摸敏感显示器,并至少执行第一软件应用程序和第二软件应用程序,所述第一软件应用程序包括第一组一个或多个姿态识别器,所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器,并且其中各自的姿态识别器具有相对应的姿态处理器,所述处理器进一步配置成 使得能够至少显示所述第二软件应用程序的一个或多个视图的子集;以及 当至少显示所述第二软件应用程序的一个或多个视图的子集时 检测所述触摸敏感显示器上的触摸输入序列,所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分;以及在检测所述触摸输入序列的第一阶段期间 传送一个或多个触摸输入的所述第一部分到所述第一软件应用程序和所述第二软件应用程序; 从所述第一组的姿态识别器中认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及 使用与所述一个或多个匹配的姿态识别器相对应的一个或多个姿态处理器,来处理一个或多个触摸输入的所述第一部分。
2.如权利要求I所述的电子设备,其中,所述处理器配置成,当一个或多个触摸输入的所述第一部分中的触摸输入至少部分地交叠于所述第二软件应用程序的显示的视图中的至少一个时,检测所述触摸输入序列。
3.如权利要求I所述的电子设备,其中,所述处理器配置成,使得能够至少显示所述第二软件应用程序的一个或多个视图的子集,而不显示所述第一软件应用程序的任何视图。
4.如权利要求I所述的电子设备,其中,所述处理器配置成,使得能够至少显示所述第二软件应用程序的一个或多个视图的子集,而不显示任何其他应用程序的视图。
5.如权利要求I所述的电子设备,其中,所述处理器进一步配置成 在所述第一阶段之后,在检测所述触摸输入序列的第二阶段期间 传送一个或多个触摸输入的所述第二部分到所述第一软件应用程序,而不将一个或多个触摸输入的所述第二部分传送到所述第二软件应用程序; 从所述一个或多个匹配的姿态识别器中认定识别所述触摸输入序列的第二匹配姿态识别器;以及 使用对应于各自的匹配的姿态识别器的姿态处理器,来处理所述触摸输入序列。
6.如权利要求5所述的电子设备,其中,所述处理器配置成,通过使得能够显示所述第一软件应用程序的一个或多个视图,而使用对应于各自的匹配的姿态识别器的姿态处理器,来处理所述触摸输入序列。
7.如权利要求5所述的电子设备,其中,所述处理器配置成,通过将所述第二软件应用程序的一个或多个视图的显示替换为所述第一软件应用程序的一个或多个视图的显示,而使用对应于各自的匹配的姿态识别器的姿态处理器,来处理所述触摸输入序列。
8.如权利要求5所述的电子设备,其中,所述处理器配置成,同时执行所述第一软件应用程序、所述第二软件应用程序以及第三软件应用程序;以及通过将所述第二软件应用程序的一个或多个显示的视图替换为所述第三软件应用程序的一个或多个视图,而使用对应于各自的匹配的姿态识别器的姿态处理器,来处理所述触摸输入序列。
9.如权利要求5所述的电子设备,其中,所述处理器配置成 使得能够在所述触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标;以及 使得能够同时显示至少所述第二软件应用程序的一个或多个视图的子集。
10.如权利要求I所述的电子设备,其中,所述第一软件应用程序是应用程序启动器。
11.如权利要求I所述的电子设备,其中,所述第一软件应用程序是操作系统应用程序。
12.—种电子设备,包括 触摸敏感显示器,配置成接收触摸输入; 显示使能单元,用于至少显示第二软件应用程序的一个或多个视图的子集,所述第二软件应用程序包括第二组一个或多个姿态识别器,并且其中各自的姿态识别器具有对应的姿态处理器;以及 检测单元,用于当至少显示所述第二软件应用程序的一个或多个视图的子集时,检测所述触摸敏感显示器上的触摸输入序列,所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分;以及 传送单元,用于在检测所述触摸输入序列的第一阶段期间,传送一个或多个触摸输入的所述第一部分到第一软件应用程序和所述第二软件应用程序,所述第一软件应用程序包括第一组一个或多个姿态识别器; 认定单元,用于在检测所述触摸输入序列的所述第一阶段期间,从所述第一组的姿态识别器中认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及 触摸输入处理单元,用于在检测所述触摸输入序列的所述第一阶段期间,使用对应于所述一个或多个匹配的姿态识别器的一个或多个姿态处理器,来处理一个或多个触摸输入的所述第一部分。
13.如权利要求12所述的电子设备,其中,所述检测单元包括,用于当一个或多个触摸输入的所述第一部分中的触摸输入至少部分地交叠于所述第二软件应用程序的显示的视图中的至少一个时检测所述触摸输入序列的装置。
14.如权利要求12所述的电子设备,其中,所述显示使能单元包括,用于使得能够至少显示所述第二软件应用程序的一个或多个视图的子集、而不显示所述第一软件应用程序的任何视图的装置。
15.如权利要求12所述的电子设备,包括 用于在所述第一阶段之后,在检测所述触摸输入序列的第二阶段期间,传送一个或多个触摸输入的所述第二部分到所述第一软件应用程序、而不将一个或多个触摸输入的所述第二部分传送到所述第二软件应用程序的装置; 用于在所述第一阶段之后,在检测所述触摸输入序列的所述第二阶段期间,从所述一个或多个匹配的姿态识别器中认定识别所述触摸输入序列的第二匹配的姿态识别器的装置;以及用于在所述第一阶段之后,在检测所述触摸输入序列的所述第二阶段期间,使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置。
16.如权利要求12所述的电子设备,其中,所述触摸输入处理单元包括 用于使得能够在触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标的装置;以及 用于使得能够同时显示至少所述第二软件应用程序的一个或多个视图的子集的装置。
17.如权利要求12所述的电子设备,其中,所述显示使能单元包括,用于使得能够至少显示所述第二软件应用程序的一个或多个视图的子集、而不显示任何其他应用程序的视图的装置。
18.如权利要求15所述的电子设备,其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于使得能够显示所述第一软件应用程序的一个或多个视图的装置。
19.如权利要求15所述的电子设备,其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于将所述第二软件应用程序的一个或多个视图的显示替换为所述第一软件应用程序的一个或多个视图的显示的装置。
20.如权利要求15所述的电子设备,其中,所述第一软件应用程序、所述第二软件应用程序以及第三软件应用程序同时执行;并且其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于将所述第二软件应用程序的一个或多个显示的视图替换为所述第三软件应用程序的一个或多个视图的装置。
21.如权利要求12所述的电子设备,其中,所述第一软件应用程序是应用程序启动器。
22.如权利要求12所述的电子设备,其中,所述第一软件应用程序是操作系统应用程序。
23.一种用于具有触摸敏感显示器的电子设备的信息处理装置,包括 显示使能单元,用于至少显示第二软件应用程序的一个或多个视图的子集,所述第二软件应用程序包括第二组一个或多个姿态识别器,并且其中各自的姿态识别器具有对应的姿态处理器; 检测单元,用于当至少显示所述第二软件应用程序的一个或多个视图的子集时,检测所述触摸敏感显示器上的触摸输入序列,所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分; 传送单元,用于在检测所述触摸输入序列的第一阶段期间,传送一个或多个触摸输入的所述第一部分到第一软件应用程序和所述第二软件应用程序,所述第一软件应用程序包括第一组一个或多个姿态识别器; 认定单元,用于在检测所述触摸输入序列的所述第一阶段期间,从所述第一组的姿态识别器中认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及 触摸输入处理单元,用于在检测所述触摸输入序列的第一阶段期间,使用对应于所述一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的所述第一部分。
24.如权利要求23所述的信息处理装置,其中,所述检测单元包括,用于当一个或多个触摸输入的所述第一部分中的触摸输入至少部分地交叠于所述第二软件应用程序的显示的视图中的至少一个时,检测所述触摸输入序列的装置。
25.如权利要求23所述的信息处理装置,其中,所述显示使能单元包括,用于使得能够至少显示所述第二软件应用程序的一个或多个视图的子集、而不显示所述第一软件应用程序的任何视图的装置。
26.如权利要求23所述的信息处理装置,包括 用于在所述第一阶段之后,在检测所述触摸输入序列的第二阶段期间,传送一个或多个触摸输入的所述第二部分到所述第一软件应用程序、而不将一个或多个触摸输入的所述第二部分传送到所述第二软件应用程序的装置; 用于在所述第一阶段之后,在检测所述触摸输入序列的所述第二阶段期间,从所述一个或多个匹配的姿态识别器中认定识别所述触摸输入序列的第二匹配的姿态识别器的装置;以及 用于在所述第一阶段之后,在检测所述触摸输入序列的所述第二阶段期间,使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置。
27.如权利要求23所述的信息处理装置,其中,所述触摸输入处理单元包括 用于使得能够在所述触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标的装置;以及 用于使得能够同时显示至少所述第二软件应用程序的一个或多个视图的子集的装置。
28.如权利要求23所述的信息处理装置,其中,所述显示使能单元包括,用于使得能够至少显示所述第二软件应用程序的一个或多个视图的子集、而不显示任何其他应用程序的视图的装置。
29.如权利要求26所述的信息处理装置,其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于备自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于使得能够显示所述第一软件应用程序的一个或多个视图的装置。
30.如权利要求26所述的信息处理装置,其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于将所述第二软件应用程序的一个或多个视图的显示替换为所述第一软件应用程序的一个或多个视图的显示的装置。
31.如权利要求26所述的信息处理装置,其中,所述第一软件应用程序、所述第二软件应用程序以及第三软件应用程序同时执行;并且其中,所述用于在所述第一阶段之后在检测所述触摸输入序列的所述第二阶段期间使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列的装置包括,用于将所述第二软件应用程序的一个或多个显示的视图替换为所述第三软件应用程序的一个或多个视图的装置。
32.如权利要求23所述的信息处理装置,其中,所述第一软件应用程序是应用程序启动器。
33.如权利要求23所述的信息处理装置,其中,所述第一软件应用程序是操作系统应用程序。
34.一种在具有触摸敏感显示器的电子设备中执行的方法,所述电子设备配置成至少执行第一软件应用程序和第二软件应用程序,所述第一软件应用程序包括第一组一个或多个姿态识别器,所述第二软件应用程序包括一个或多个视图以及第二组一个或多个姿态识别器,其中各自的姿态识别器具有对应的姿态处理器,所述方法包括 至少显示所述第二软件应用程序的一个或多个视图的子集;以及 当至少显示所述第二软件应用程序的一个或多个视图的子集时 检测所述触摸敏感显示器上的触摸输入序列,所述触摸输入序列包括一个或多个触摸输入的第一部分以及所述第一部分之后的一个或多个触摸输入的第二部分;以及 在检测所述触摸输入序列的第一阶段期间 传送一个或多个触摸输入的所述第一部分到所述第一软件应用程序和所述第二软件应用程序; 从所述第一组的姿态识别器中认定识别一个或多个触摸输入的所述第一部分的一个或多个匹配的姿态识别器;以及 使用对应于所述一个或多个匹配的姿态识别器的一个或多个姿态处理器来处理一个或多个触摸输入的所述第一部分。
35.如权利要求34所述的方法,其中,所述检测发生在当一个或多个触摸输入的所述第一部分中的触摸输入至少部分地交叠于所述第二软件应用程序的显示的视图中的至少一个时。
36.如权利要求34所述的方法,其中,所述显示包括至少显示所述第二软件应用程序的一个或多个视图的子集,而不显示所述第一软件应用程序的任何视图。
37.如权利要求34所述的方法,其中,所述显示包括至少显示所述第二软件应用程序的一个或多个视图的子集,而不显示任何其他应用程序的视图。
38.如权利要求34所述的方法,包括 在所述第一阶段之后,在检测所述触摸输入序列的第二阶段期间 传送一个或多个触摸输入的所述第二部分到所述第一软件应用程序,而不将一个或多个触摸输入的所述第二部分传送到所述第二软件应用程序; 从所述一个或多个匹配的姿态识别器中认定识别所述触摸输入序列的第二匹配的姿态识别器;以及 使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列。
39.如权利要求38所述的方法,其中,使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列包括显示所述第一软件应用程序的一个或多个视图。
40.如权利要求38所述的方法,其中,使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列包括将所述第二软件应用程序的一个或多个视图的显示替换为所述第一软件应用程序的一个或多个视图的显示。
41.如权利要求38所述的方法,其中,所述电子设备同时执行所述第一软件应用程序、所述第二软件应用程序以及第三软件应用程序;并且使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列包括将所述第二软件应用程序的一个或多个显示的视图替换为所述第三软件应用程序的一个或多个视图。
42.如权利要求38所述的方法,其中,使用对应于各自匹配的姿态识别器的姿态处理器来处理所述触摸输入序列包括 在所述触摸敏感显示器的第一预定区域中显示至少对应于多个同时打开的应用程序中的一些的一组打开的应用程序图标;以及 同时显示至少所述第二软件应用程序的一个或多个视图的子集。
43.如权利要求34所述的方法,其中,所述第一软件应用程序是应用程序启动器。
44.如权利要求34所述的方法,其中,所述第一软件应用程序是操作系统应用程序。
全文摘要
本发明公开了事件识别。一种方法包括显示视图层次结构中的一个或多个视图,并且执行与特定视图相关联的软件元素。每个特定视图包括事件识别器。每个事件识别器具有一个或多个事件定义以及事件处理器,该事件处理器指定对目标的动作并被配置成响应于事件识别而发送所述动作到所述目标。所述方法包括检测子事件序列,并识别所述视图层次结构的视图中的一个作为点击视图。所述点击视图确立哪些视图是有效涉及的视图。所述方法包括传送各自的子事件到用于每个有效涉及的视图的事件识别器。各自的事件识别器具有事件定义,并根据内部状态选择事件定义中的一个。在处理子事件序列中的下一个子事件之前,各自的事件识别器处理各自的子事件。
文档编号G06F3/048GK102768608SQ20111046326
公开日2012年11月7日 申请日期2011年12月20日 优先权日2010年12月20日
发明者I·乔德里, J·H·沙法尔, K·L·科西恩达 申请人:苹果公司

最新回复(0)