(57)【要約】      （修正有）【課題】ジェスチャ認識を制御及び変更するためのデリゲートを有するジェスチャ・レコグナイザを提供する。【解決手段】個別のジェスチャ認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、工程と、１つ以上のタッチを検出する工程と、個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程とを有する。【選択図】図１Ａ
2014139816.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの１つ以上のビューを表示する工程であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
１つ以上のイベントを検出する工程と、
前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理する工程であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って１つ以上の値を判定するために前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項２】
前記１つ以上のイベント・センサは１つ以上のタッチを検出するように構成されたタッチセンサ面を含み、前記１つ以上のイベントは前記１つ以上のタッチを含み、前記個別のイベントを処理する工程は個別のタッチを処理する工程を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記対応するデリゲートにより判定された前記１つ以上の値に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを条件付きで受信する工程をさらに有することを特徴とする請求項２に記載の方法。
【請求項４】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記１つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視する工程を含むことを特徴とする請求項２又は３に記載の方法。
【請求項５】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記１つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止する工程を含むことを特徴とする請求項２又は３に記載の方法。
【請求項６】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項２又は３に記載の方法。
【請求項７】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項２又は３に記載の方法。
【請求項８】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第２ジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って前記第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項２乃至７の何れか１項に記載の方法。
【請求項９】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項２乃至７の何れか１項に記載の方法。
【請求項１０】
前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記方法は、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てる工程を含むことを特徴とする請求項１乃至９の何れか１項に記載の方法。
【請求項１１】
イベントを検出するための１つ以上のイベント・センサと、
１つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを備える電子デバイスであって、
前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のレコグナイザは個別のデリゲートを有する、命令と、
前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って１つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項１２】
１つ以上のイベント・センサを有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは個別のデリゲートを有する、命令と、
１つ以上のイベントを検出するための命令と、
前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って１つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項１３】
タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの１つ以上のビューを表示する工程であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出する工程と、
前記１つ以上のタッチの個別のタッチを処理する工程であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項１４】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記方法は、前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる工程を含み、
前記１つ以上のタッチの前記個別のタッチを処理する工程は、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する工程と、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行する工程と、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む１つ以上の受信ジェスチャ・レコグナイザを識別する工程と、
受信ジェスチャ・レコグナイザのうちの１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、前記アプリケーション状態に従って１つ以上の値を判定するために前記割り当てられたデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記１つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含み、
前記方法は、前記タッチのうちの１つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの１つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第２ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された１つ以上の値に従って前記第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項１５乃至１７の何れか１項に記載の方法。
【請求項１９】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項１５乃至１７の何れか１項に記載の方法。
【請求項２０】
タッチセンサ面と、
１つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを備える電子デバイスであって、
前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出するための命令と、
前記１つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項２１】
タッチセンサ面を有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出するための命令と、
前記タッチセンサ面における１つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項２２】
タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示する工程であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、工程と、
１つ以上のタッチを検出する工程と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理する工程であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項２３】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項２２に記載の方法。
【請求項２４】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有することを特徴とする請求項２３に記載の方法。
【請求項２５】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項２４に記載の方法。
【請求項２６】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記１つ以上の個別の動作メッセージを条件付きで送信する工程は、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記１つ以上の個別の動作メッセージを条件付きで送信する工程を含むことを特徴とする請求項２２乃至２５の何れか１項に記載の方法。
【請求項２７】
前記方法は、前記個別のジェスチャ・レコグナイザからの追加の情報を要求する工程をさらに有し、前記ソフトウェア・アプリケーションを実行する工程は、前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項２２乃至２６の何れか１項に記載の方法。
【請求項２８】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの１つ以上を含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの１つ以上を含むことを特徴とする請求項２２乃至２８の何れか１項に記載の方法。
【請求項３０】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項２２乃至２９の何れか１項に記載の方法。
【請求項３１】
タッチセンサ面と、
１つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを備える電子デバイスであって、
前記１つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、命令と、
１つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項３２】
タッチセンサ面を有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記１つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、命令と、
１つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項３３】
タッチセンサ面と、
１つ以上のプロセッサと、
メモリと、
１つ以上のプログラムとを備える電子デバイスであって、
前記１つ以上のプログラムは前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成され、前記１つ以上のプログラムは請求項１乃至１０、１３乃至１９及び２２乃至３０の何れか１項に記載の方法を実行するための命令を含むことを特徴とする電子デバイス。
【請求項３４】
１つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、前記１つ以上のプログラムは、タッチセンサ面を有する電子デバイスによって実行される場合に、請求項１乃至１０、１３乃至１９及び２２乃至３０の何れか１項に記載の方法を実行させる命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項３５】
タッチセンサ面と、
請求項１乃至１０、１３乃至１９及び２２乃至３０の何れか１項に記載の方法を実行するための手段とを含むことを特徴とする電子デバイス。
【請求項３６】
タッチセンサ面を有する電子デバイスに用いられる情報処理装置であって、
請求項１乃至１０、１３乃至１９及び２２乃至３０の何れか１項に記載の方法を実行するための手段とを含むことを特徴とする情報処理装置。
【請求項３７】
１つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの１つ以上のビューの表示を可能にし、前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された１つ以上のタッチを検出し、
前記１つ以上のタッチの個別のタッチを処理し、前記個別のタッチについて、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信し、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項３８】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記処理ユニットは、
前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当て、
前記１つ以上のタッチの個別のタッチを処理することを、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別し、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行し、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む１つ以上の受信ジェスチャ・レコグナイザを識別し、
受信ジェスチャ・レコグナイザのうちの１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することによって行うように構成されることを特徴とする請求項３７に記載の電子デバイス。
【請求項３９】
前記処理ユニットは、
前記１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記アプリケーション状態に従って１つ以上の値を判定するために前記割り当てられたデリゲートを実行し、
前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記１つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチのうちの１つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの１つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項３８に記載の電子デバイス。
【請求項４０】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にすることによって行われるように構成されることを特徴とする請求項３９に記載の電子デバイス。
【請求項４１】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、第２ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された１つ以上の値に従って前記第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項３９又は４０に記載の電子デバイス。
【請求項４２】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項３９又は４０に記載の電子デバイス。
【請求項４３】
１つ以上のイベントを検知するように構成された１つ以上のイベント検知ユニットと、
前記１つ以上のイベント検知ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの１つ以上のビューの表示を可能にし、前記表示される１つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記１つ以上のイベント検知ユニットにより１つ以上のイベントを検出し、
前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って１つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項４４】
前記１つ以上のイベント検知ユニットは１つ以上のタッチを検出するように構成されたタッチセンサ・ユニットを含み、前記１つ以上のイベントは前記１つ以上のタッチを含み、前記処理ユニットは個別のタッチを処理するように構成されることを特徴とする請求項４３に記載の電子デバイス。
【請求項４５】
前記処理ユニットは、前記対応するデリゲートにより判定された前記１つ以上の値に従って前記個別のジェスチャ・レコグナイザが前記個別のタッチを条件付きで受信することを可能にするように構成されることを特徴とする請求項４４に記載の電子デバイス。
【請求項４６】
前記処理ユニットは、前記対応するデリゲートにより判定された前記１つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視することを可能にするように構成されることを特徴とする請求項４４又は４５に記載の電子デバイス。
【請求項４７】
前記処理ユニットは、前記対応するデリゲートにより判定された前記１つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止することによって、前記個別のタッチを処理するように構成されることを特徴とする請求項４４又は４５に記載の電子デバイス。
【請求項４８】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを特徴とする請求項４４又は４５に記載の電子デバイス。
【請求項４９】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項４４又は４５に記載の電子デバイス。
【請求項５０】
前記処理ユニットは、第２ジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って前記第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項４４乃至４９の何れか１項に記載の電子デバイス。
【請求項５１】
前記処理ユニットは、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項４４乃至４９の何れか１項に記載の電子デバイス。
【請求項５２】
前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記処理ユニットは、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てるように構成されることを特徴とする請求項４３乃至５１の何れか１項に記載の電子デバイス。
【請求項５３】
１つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
ソフトウェア・アプリケーションを実行し、
前記ソフトウェア・アプリケーションの１つ以上のビューの表示を可能にし、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含み、
前記タッチセンサ面ユニットで受信された１つ以上のタッチを検出し、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項５４】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項５３に記載の電子デバイス。
【請求項５５】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有することを特徴とする請求項５４に記載の電子デバイス。
【請求項５６】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項５５に記載の電子デバイス。
【請求項５７】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記処理ユニットは、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記１つ以上の個別の動作メッセージを条件付きで送信するように構成されることを特徴とする請求項５３乃至５６の何れか１項に記載の電子デバイス。
【請求項５８】
前記処理ユニットは、
前記個別のジェスチャ・レコグナイザからの追加の情報を要求し、
前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項５３乃至５７の何れか１項に記載の電子デバイス。
【請求項５９】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項５８に記載の電子デバイス。
【請求項６０】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの１つ以上を含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの１つ以上を含むことを特徴とする請求項５３乃至５９の何れか１項に記載の電子デバイス。
【請求項６１】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項５３乃至６０の何れか１項に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にジェスチャ入力を認識するための装置及び方法を含むがそれらに限定されないユーザインタフェース処理に関する。
【背景技術】
【０００２】
電子デバイスは一般に、計算デバイスと相互作用するために使用されうるユーザインタフェースを含む。ユーザインタフェースは、ユーザインタフェースの種々の態様と相互作用するためのキーボード、マウス及びタッチセンサ面のような表示及び／又は入力デバイスを含む。入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第１集合（例えば、タップ、ダブルタップ、横スワイプ、縦スワイプ、ピンチイン、ピンチアウト、２本指スワイプのうちの２つ以上）は、特定の状況（例えば、第１アプリケーションの特定のモード）において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況（例えば、異なるアプリケーション及び／又は第１アプリケーション内の異なるモード又は状況）において適切な入力として認識される。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは、複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要とする可能性がある。これらの問題及び同様の問題は、タッチ・ベースのジェスチャ以外の入力ソースを利用するユーザインタフェースにおいて発生しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、タッチ・ベースのジェスチャ及びイベントだけでなく、他の入力ソースからのジェスチャ及びイベントを認識する総合的なフレームワーク又はメカニズムを有するのが望ましく、これは計算デバイスの全てのアプリケーション・プログラムの事実上全ての状況又はモードに容易に適応可能であり、アプリケーションが更新された場合又は新しいアプリケーションが計算デバイスに追加された場合にほとんど又は全く修正を必要としない。
【課題を解決するための手段】
【０００４】
上述の欠点に対処するために、一部の実施形態によると、１つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの１つ以上のビューを表示する工程を含む。前記表示される１つ以上のビューの個別のビューは１つ以上のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、１つ以上のイベントを検出する工程と、前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理する工程とを含む。前記個別のイベントの処理は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って１つ以上の値を判定するために前記個別のジェスチャ・レコグナイザの前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む。さらに、前記方法は、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【０００５】
一部の実施形態によると、電子デバイスは、イベントを検出するための１つ以上のイベント・センサと、１つ以上のプロセッサと、メモリと、前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを含む。前記１つ以上のプログラムは、複数のビューとアプリケーション状態とを有するソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、１つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令とをさらに含む。前記個別のジェスチャ・イベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って１つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【０００６】
一部の実施形態によると、コンピュータ可読記憶媒体は、イベントを検出するための１つ以上のイベント・センサを有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納する。前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、１つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令を含む。前記個別のイベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って１つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【０００７】
一部の実施形態によると、タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの１つ以上のビューを表示する工程を含む。前記表示される１つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出する工程をさらに含む。前記方法は、前記１つ以上のタッチの個別のタッチを処理する工程をさらに含む。前記個別のタッチを処理する工程は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含む。前記個別のタッチを処理する工程はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程を含む。さらに、前記方法は、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【０００８】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、１つ以上のプロセッサと、メモリと、前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを含む。前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記１つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【０００９】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納する。前記１つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有する１つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記１つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【００１０】
一部の実施形態によると、タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記ソフトウェア・アプリケーションの１つ以上のビューを表示する工程を含む。前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは少なくとも１つの離散ジェスチャ・レコグナイザと、少なくとも１つの連続ジェスチャ・レコグナイザとを含む。前記離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、前記連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記方法はまた、１つ以上のタッチを検出する工程と、前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理する工程とを含む。前記個別のタッチを処理する工程は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、前記方法はさらに、前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【００１１】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、１つ以上のプロセッサと、メモリと、前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを含む。前記１つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも１つの離散ジェスチャ・レコグナイザと、少なくとも１つの連続ジェスチャ・レコグナイザとを含む。少なくとも１つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも１つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、１つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【００１２】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの１つ以上のプロセッサによる実行のための１つ以上のプログラムを格納する。前記１つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令を含む。前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも１つの離散ジェスチャ・レコグナイザと、少なくとも１つの連続ジェスチャ・レコグナイザとを含む。少なくとも１つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも１つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、１つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。前記個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【００１３】
一部の実施形態によると、電子デバイスは、１つ以上のイベントを検知するように構成された１つ以上のイベント検知ユニットと、前記１つ以上のイベント検知ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの１つ以上のビューの表示を可能にするように構成される。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記１つ以上のイベント検知ユニットにより１つ以上のイベントを検出し、前記個別のジェスチャ・レコグナイザを用いて前記１つ以上のイベントの個別のイベントを処理することを、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って１つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記１つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【００１４】
一部の実施形態によると、電子デバイスは、１つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの１つ以上のビューの表示を可能にするように構成される。前記表示される１つ以上のビューの個別のビューは１つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記表示されたビューのうちの１つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された１つ以上のタッチを検出するように構成される。前記処理ユニットは、前記１つ以上のタッチの個別のタッチを処理することを、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【００１５】
一部の実施形態によると、電子デバイスは、１つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、ソフトウェア・アプリケーションを実行し、前記ソフトウェア・アプリケーションの１つ以上のビューの表示を可能にするように構成される。前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、少なくとも１つの離散ジェスチャ・レコグナイザと、少なくとも１つの連続ジェスチャ・レコグナイザとを含む。少なくとも１つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも１つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記処理ユニットは、前記タッチセンサ面ユニットで受信された１つ以上のタッチを検出し、前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するように構成される。前記処理ユニットは、個別のタッチを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成される。
【図面の簡単な説明】
【００１６】
【図１Ａ】、
【図１Ｂ】一部の実施形態に係る電子デバイスを示すブロック図である。
【図２】一部の実施形態に係る例示的な電子デバイスの入出力処理スタックの図である。
【図３Ａ】一部の実施形態に係る例示的なビュー階層を示す図である。
【図３Ｂ】一部の実施形態に係るイベント処理のための例示的なコンポーネントを示すブロック図である。
【図３Ｃ】一部の実施形態に係るジェスチャ・レコグナイザの例示的なクラス及びインスタンスを示すブロック図である。
【図４Ａ】、
【図４Ｂ】、
【図４Ｃ】、
【図４Ｄ】一部の実施形態に係る例示的な状態遷移マシンを示すフローチャートである。
【図５Ａ】一部の実施形態に係るイベント情報のフローを示すブロック図である。
【図５Ｂ】、
【図５Ｃ】一部の実施形態に係るジェスチャ認識方法を示す高レベル・フローチャートである。
【図６Ａ】、
【図６Ｂ】一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【図７Ａ】、
【図７Ｂ】一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【図８Ａ】、
【図８Ｂ】一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【図９】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図１０】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図１１】一部の実施形態に係る電子デバイスの機能ブロック図である。
【発明を実施するための形態】
【００１７】
図面を通じて、同様の参照符号は対応する部分を示す。
【００１８】
以下、実施形態を詳細に参照する。実施形態の例を添付の図面に示す。以下の詳細な説明において、本発明を完全な理解を提供するために多くの特定の詳細が説明される。しかし、本発明は、これらの特定の詳細を含まずに実施されてもよいことが当業者には明らかであるだろう。他の例において、実施形態の態様を不必要に曖昧にしないために、周知の方法、手順、コンポーネント、回路及びネットワークについては詳細に記載していない。
【００１９】
種々の要素を記載するために第１、第２などの用語が本明細書において使用されるが、これらの要素はこれらの用語により限定されるべきではないことが理解されるだろう。これらの用語は、１つの要素を別の要素と区別するためだけに使用される。例えば本発明の範囲から逸脱せずに、第１接触が第２接触と呼ばれてもよく、同様に第２接触が第１接触と呼ばれてもよい。第１接触及び第２接触は両方とも接触であるが同一の接触ではない。
【００２０】
本明細書において本発明の説明に使用される専門用語は、特定の実施形態を説明するためのものであり、本発明を限定することを意図しない。本発明の説明及び添付の特許請求の範囲において使用されるように、文脈で別段の明記が無い限り、単数形「ａ」、「ａｎ」及び「ｔｈｅ」は複数形を含むことを意図する。本明細書で使用されるような「及び／又は」という用語は、列挙された関連する項目のうちの１つ以上のものの任意且つ全ての可能な組み合わせを参照し、包含することが理解されるだろう。「備える」及び／又は「備えている」という用語は、本明細書において使用される場合に、規定された特徴、数字、ステップ、動作、要素及び／又はコンポーネントの存在を特定するが、１つ以上の他の特徴、数字、ステップ、動作、要素、コンポーネント及び／又はこれらのグループの存在又は追加を除外しないことがさらに理解されるだろう。
【００２１】
本明細書で使用されるように、「ならば」という用語は、状況に応じて「場合に」又は「時に」又は「判定したことに応答して」又は「検出したことに応答して」を意味すると解釈される。同様に、「判定されたならば」又は「［規定された状態又はイベント］が検出されたならば」という句は、状況に応じて「判定すると」又は「判定したことに応答して」又は「（規定された状態又はイベント）を検出した時に」又は「（規定された状態又はイベント）を検出したことに応答して」を意味すると解釈される。
【００２２】
本明細書で使用されるように、「イベント」という用語は、デバイスの１つ以上センサにより検出された入力を示す。特に、「イベント」という用語はタッチセンサ面におけるタッチを含む。イベントは１つ以上のサブイベントを含む。サブイベントは典型的に、イベントに対する変更を示す（例えば、タッチのタッチ・ダウン、タッチ・ムーブ及びリフトオフはサブイベントでありうる）。１つ以上のサブイベントのシーケンスにおけるサブイベントは、とりわけキー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウス移動、マウスボタン押下、マウスボタン解放、ペンスタイラス・タッチ、ペンスタイラス移動、ペンスタイラス解放、音声命令、検出された眼球運動、バイオメトリック入力及び検出されたユーザの生理学的変化を含むがこれらに限定されない多くの形態を含む。イベントは単一のサブイベント（例えば、デバイスの横方向の短い動き）を含みうるので、本明細書で使用される「サブイベント」という用語はイベントも示す。
【００２３】
本明細書で使用されるように、「イベント・レコグナイザ」及び「ジェスチャ・レコグナイザ」という用語は、ジェスチャ又は他のイベント（例えばデバイスの動き）を認識できるレコグナイザを示すために交換可能に使用される。
【００２４】
上述したように、入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第１集合（例えば、タップ、ダブルタップ、横スワイプ、縦スワイプの２つ以上）は、特定の状況（例えば、第１アプリケーションの特定のモード）において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況（例えば、異なるアプリケーション及び／又は第１アプリケーション内の異なるモード又は状況）において適切な入力として認識される。さらに、２つ以上の適切な入力（又はジェスチャ）は、互いに干渉するか又は矛盾しうる（例えば、シングルタップを検出した後に、シングルタップを完全なシングルタップ・ジェスチャとして認識するか又はダブルタップ・ジェスチャの一部として認識するかを決定する必要がある）。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要としうる。
【００２５】
タッチセンサ面を有するデバイスで実行するアプリケーションを制御するためにタッチ・ベースのジェスチャを使用する場合に、タッチは時間的側面及び空間的側面の両方を有する。フェーズと呼ばれる時間的側面は、いつタッチが始まったか、それが移動しているか又は静止しているか、並びにいつそれが終了したか、すなわちいつ指が画面から持ち上げられたかを示す。タッチの空間的側面は、タッチが発生したビュー又はユーザインタフェース・ウィンドウの集合である。タッチが検出されるビュー又はウィンドウは、ビュー階層のプログラムレベルに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれ、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【００２６】
図１Ａ及び図１Ｂは、一部の実施形態に係る電子デバイス１０２、１０４の種々の実施形態を示すブロック図である。電子デバイス１０２又は１０４は、デスクトップ・コンピュータシステム、ラップトップ・コンピュータシステム、ネットブック・コンピュータシステム、移動体電話機、スマートフォン、携帯情報端末又はナビゲーションシステムを含むがこれらに限定されない任意の電子デバイスであってもよい。電子デバイスはまた、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイ（例えば、図１Ｂのタッチセンサ・ディスプレイ１５６）を有するポータブル電子デバイス、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイを含むコンピュータ、タッチセンサ面とユーザインタフェースを提示するように構成されたディスプレイとを有するコンピュータ、若しくはコンシューマ電子デバイス、移動体電話機、ビデオゲームシステム、電子音楽プレーヤ、タブレットＰＣ、電子書籍読書システム、電子書籍、ＰＤＡ、電子オーガナイザ、電子メールデバイス、ラップトップ、ネットブック又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート機器等を含むがこれらに限定されない任意の他の形態の計算デバイスであってもよい。電子デバイス１０２又は１０４はユーザインタフェース１１３を含む。
【００２７】
一部の実施形態において、電子デバイス１０４は、タッチスクリーン・ディスプレイを含む。これらの実施形態において、ユーザインタフェース１１３は、電子デバイス１０２及び１０４と相互作用するためにユーザにより使用されるオンスクリーン・キーボード（不図示）を含みうる。これに代えて、キーボードは電子デバイス１０４（又は電子デバイス１０２）から分離した別個のものであってもよい。例えばキーボードは、電子デバイス１０２又は１０４に結合された有線又は無線キーボードでありうる。
【００２８】
一部の実施形態において、電子デバイス１０２は、電子デバイス１０２に結合された、ディスプレイ１２６と１つ以上の入力デバイス１２８（例えば、キーボード、マウス、トラックボール、マイク、物理ボタン（群）、タッチパッド等）とを含む。これらの実施形態において、入力デバイス１２８のうちの１つ以上は、場合によっては電子デバイス１０２から分離した別個のものであってもよい。例えば、１つ以上の入力デバイスは、場合によっては電子デバイスから分離してもよいキーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの１つ以上を含みうる。オプションとして、デバイス１０２又は１０４は、１つ以上の加速度計、ジャイロスコープ、ＧＰＳシステム、スピーカ、赤外線（ＩＲ）センサ、バイオメトリック・センサ、カメラ等の１つ以上のセンサ１３０を含んでもよい。なお、入力デバイス１２８又はセンサ１３０である種々の例示的なデバイスの上記説明は、本明細書で説明する実施形態の動作に重要なものではなく、本明細書で入力デバイスとして説明される任意の入力デバイス又はセンサ・デバイスはセンサとして同様に適切に説明され、センサとして説明される任意の入力デバイス又はセンサ・デバイスは入力デバイスとして同様に適切に説明される。一部の実施形態において、１つ以上のセンサ１３０により生成された信号はイベントを検出する入力ソースとして使用される。
【００２９】
一部の実施形態において、電子デバイス１０４は、電子デバイス１０４に結合された、タッチセンサ・ディスプレイ１５６（すなわち、タッチセンサ面を有するディスプレイ）と、１つ以上の入力デバイス１２８とを含む。一部の実施形態において、タッチセンサ・ディスプレイ１５６は、２つ以上の別個の同時（又は部分的に同時）のタッチを検出する機能を有し、これらの実施形態において、ディスプレイ１５６は、本明細書においてマルチタッチ・ディスプレイ又はマルチタッチセンサ・ディスプレイと呼ばれる場合もある。
【００３０】
本明細書で説明する電子デバイス１０２又は１０４の一部の実施形態において、入力デバイス１２８は電子デバイス１０２又は１０４に配置される。他の実施形態において、入力デバイス１２８のうちの１つ以上は、電子デバイス１０２又は１０４から分離した別個のものであり、例えば入力デバイス１２８のうちの１つ以上は、ケーブル（例えば、ＵＳＢケーブル）又は無線接続（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）接続）により電子デバイス１０２又は１０４に結合されうる。
【００３１】
入力デバイス１２８を使用する場合に、又は電子デバイス１０４のタッチセンサ・ディスプレイ１５６においてタッチ・ベースのジェスチャを実行する場合に、ユーザは電子デバイス１０２又は１０４の１つ以上のＣＰＵ１１０により処理されるサブイベントのシーケンスを生成する。一部の実施形態において、電子デバイス１０２又は１０４の１つ以上のＣＰＵ１１０は、イベントを認識するためにサブイベントのシーケンスを処理する。
【００３２】
電子デバイス１０２又は１０４は典型的に、１つ以上のシングルコア又はマルチコア・プロセッシングユニット（「ＣＰＵ」又は「ＣＰＵ群」）１１０だけでなく、１つ以上のネットワーク又は他の通信インタフェース１１２とをそれぞれ含む。電子デバイス１０２又は１０４は、メモリ１１１と、コンポーネントを相互接続するための１つ以上の通信バス１１５とをそれぞれ含む。通信バス１１５は、（本明細書では不図示の）システムコンポーネントを相互接続し、これらの間の通信を制御する（チップセットと呼ばれる場合もある）回路構成を含む。上記で簡単に説明したように、電子デバイス１０２又は１０４は、ディスプレイ（例えば、ディスプレイ１２６又はタッチセンサ・ディスプレイ１５６）を含むユーザインタフェース１１３を含む。さらに、電子デバイス１０２又は１０４は典型的に、入力デバイス１２８（例えば、キーボード、マウス、タッチセンサ面、キーパッド等）を含む。一部の実施形態において、入力デバイス１２８はオンスクリーン入力デバイス（例えば、表示デバイスのタッチセンサ面）を含む。メモリ１１１は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲＲＡＭ又は他のランダムアクセス固体メモリデバイス等の高速ランダムアクセスメモリを含んでもよく、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス又は他の不揮発性固体記憶デバイス等の不揮発性メモリを含んでもよい。メモリ１１１は、場合によってはＣＰＵ（群）１１０から離れて配置された１つ以上の記憶デバイスを含みうる。メモリ１１１又はこれに代えてメモリ１１１内の不揮発性メモリデバイス（群）は、コンピュータ可読記憶媒体を含む。一部の実施形態において、（電子デバイス１０２又は１０４の）メモリ１１１又はメモリ１１１のコンピュータ可読記憶媒体は、以下のプログラム、モジュール及びデータ構造、若しくはこれらの部分集合を格納する。
●種々の基本システムサービスを処理し、ハードウェア依存のタスクを実行するプロシージャを含むオペレーティングシステム１１８。
●１つ以上の個別の通信インタフェース１１２（有線又は無線）と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等の１つ以上の通信ネットワークとを介して電子デバイス１０２又は１０４を他のデバイスにそれぞれ接続するために使用される通信モジュール１２０。
●ユーザインタフェース・オブジェクトを含むユーザインタフェースをディスプレイ１２６又はタッチセンサ・ディスプレイ１５６に表示するために使用されるユーザインタフェース・モジュール１２２。
●処理（例えば、ヒット・ビュー判定、スレッド管理及び／又はイベント監視等）を制御するために使用される制御アプリケーション１２４。一部の実施形態において、制御アプリケーション１２４はランタイム・アプリケーションを含む。他の実施形態において、ランタイム・アプリケーションは制御アプリケーション１２４を含む。
●オペレーティングシステム１１８内の種々の別の実施形態において又はアプリケーション・ソフトウェア１３２において実装されうるイベント配信システム１３０。しかし、一部の実施形態において、イベント配信システム１３０の一部の態様はオペレーティングシステム１１８において実装され、他の態様（例えば、イベント・ハンドラの少なくとも部分集合）はアプリケーション・ソフトウェア１３２において実装される。
●１つ以上のソフトウェア・アプリケーション（例えば、電子メール・アプリケーション、ウェブブラウザ・アプリケーション、テキストメッセージング・アプリケーション等）を含むアプリケーション・ソフトウェア１３２。各ソフトウェア・アプリケーションは典型的に、少なくとも実行時にソフトウェア・アプリケーション及びそのコンポーネント（例えば、ジェスチャ・レコグナイザ及びデリゲート）の状態を示すアプリケーション状態を有する。以下に説明するアプリケーション内部状態３１７（図３Ｂ）を参照。
●ソフトウェア・アプリケーション及びこれらのコンポーネント（例えば、ジェスチャ・レコグナイザ及びデリゲート）の状態を示すアプリケーション状態と、タッチセンサ・ディスプレイ１５６又はディスプレイ１２６の種々の領域を占有するアプリケーション、ビュー又は他の情報を示す表示状態と、デバイスの種々のセンサ１３０、入力デバイス１２８及び／又はタッチセンサ・ディスプレイ１５６から取得された情報を含むセンサ状態と、デバイスの位置及び／又は姿勢に関する位置情報とのうちの１つ以上を含むデバイス／グローバル内部状態１３４。
【００３３】
上記の識別された要素のぞれぞれは、上述したメモリデバイスの１つ以上に格納されてもよく、本明細書で説明する機能を実行する命令の集合に対応する。命令の集合は、１つ以上のプロセッサ（例えば、１つ以上のＣＰＵ１１０）により実行されうる。上記の識別されたモジュール又はプログラム（すなわち、命令の集合）は、別個のソフトウェアプログラム、プロシージャ又はモジュールとして実装される必要がないので、これらのモジュールの種々の部分集合は、種々の実施形態において組み合わされうるか又は他のように再構成されうる。一部の実施形態において、メモリ１１１は、上記で識別されたモジュール及びデータ構造の部分集合を格納してもよい。さらに、メモリ１１１は、上述されていない追加のモジュール及びデータ構造を格納してもよい。
【００３４】
図２は、本発明の一部の実施形態に係る例示的な電子デバイス又は装置（例えば、デバイス１０２又は１０４）の入出力処理スタック２００の図である。デバイスのハードウェア（例えば、電子回路構成）２１２は、入出力処理スタック２００のベース・レベルにある。ハードウェア２１２は、図１Ａ及び／又は図１Ｂに示されたコンポーネント等の種々のハードウェア・インタフェース・コンポーネントを含む。ハードウェア２１２は、上述のセンサ１３０のうちの１つ以上も含みうる。入出力処理スタック２００の他の全ての要素（１３２、２０４〜２１０）は、ハードウェア２１２から受信した入力を処理し、ハードウェア・ユーザインタフェース（例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータのうちの１つ以上）を介して提示される種々の出力を生成するソフトウェア・プロシージャ又はソフトウェア・プロシージャの一部である。
【００３５】
ドライバ又はドライバの集合２１０はハードウェア２１２と通信する。ドライバ２１０は、ハードウェア２１２から入力データを受信し、受信した入力データを処理する。コアオペレーティングシステム（「ＯＳ」）２０８はドライバ（群）２１０と通信できる。コアＯＳ２０８は、ドライバ（群）２１０から受信した入力生データを処理する。一部の実施形態において、ドライバ２１０はコアＯＳ２０８の一部であるとみなされうる。
【００３６】
ＯＳアプリケーション・プログラミング・インタフェース（「ＯＳ  ＡＰＩ」）の集合２０６は、コアＯＳ２０８と通信するソフトウェア・プロシージャである。一部の実施形態において、ＡＰＩ２０６は、デバイスのオペレーティングシステムに含まれるが、コアＯＳ２０８よりも上のレベルにある。ＡＰＩ２０６は、本明細書で説明する電子デバイス又は装置で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース（ＵＩ）ＡＰＩ２０４はＯＳ  ＡＰＩ２０６を利用できる。デバイスで実行するアプリケーション・ソフトウェア（「アプリケーション」）１３２は、ユーザと通信するためにＵＩ  ＡＰＩ２０４を利用できる。続いて、ＵＩ  ＡＰＩ２０４は、下位レベルの要素と通信し、最終的に、例えばマルチタッチ・ディスプレイ１５６である種々のユーザインタフェース・ハードウェアと通信する。
【００３７】
入出力処理スタック２００の各層は自身よりも下の層を利用できるが、これは必ずしも必要とされない。例えば、一部の実施形態において、アプリケーション１３２はＯＳ  ＡＰＩ２０６と通信することもある。一般に、ＯＳ  ＡＰＩ層２０６以上の層は、プライベートであるとみなされるので、コアＯＳ２０８、ドライバ（群）２１０又はハードウェア２１２に直接にアクセスしなくてもよい。層内のアプリケーション１３２及びＵＩ  ＡＰＩ２０４は、通常、ＯＳ  ＡＰＩ２０６を直接に呼び出し、続いて、ＯＳ  ＡＰＩ２０６は、コアＯＳ２０８、ドライバ（群）２１０及びハードウェア２１２の層にアクセスする。
【００３８】
別のように示すと、電子デバイス１０２又は１０４の１つ以上のハードウェア要素２１２と、例えば（図２に示す）ドライバ（群）２１０、（図２に示す）コアＯＳ（オペレーティングシステム）２０８、（図２に示す）オペレーティングシステムＡＰＩソフトウェア２０６及び（図２に示す）アプリケーション・ユーザインタフェースＡＰＩソフトウェア２０４のような、デバイスで実行するソフトウェアとは、入力デバイス（群）１２８及び／又はタッチセンサ・ディスプレイ１５６のうちの１つ以上において、（ジェスチャのサブイベントに対応しうる）入力イベントを検出し、アプリケーション１３２に配信されるイベントに入力イベントが対応するか及びいつ対応するかを判定するために現在アクティブであるイベント・レコグナイザの集合により使用される（デバイス１０２又は１０４のメモリに格納される）種々のデータ構造を生成又は更新する。イベント認識の方法、装置及びコンピュータプログラムの実施形態について、以下にさらに詳細に説明する。
【００３９】
図３Ａは、この例では最も外側のビュー３０２に表示された探索プログラムである例示的なビュー階層３００を示す。最も外側のビュー３０２は一般に、ユーザが直接に相互作用しうるユーザインタフェース全体を包含し、例えば以下のような従属ビューを含む。
●探索結果をグループ化し、縦方向にスクロール可能である探索結果パネル３０４。
●テキスト入力を受け付ける探索フィールド３０６。
●迅速なアクセスのためにアプリケーションをグループ化するホーム列３１０。
【００４０】
この例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層３００におけるビュー・レベルの個数は、階層の相異なる分岐において異なってもよく、１つ以上の従属ビューは下位レベルの従属ビューを有し、１つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。図３Ａに示す例を引き続き参照すると、探索結果パネル３０４は、探索結果毎に分離した（パネル３０４に従属する）従属ビュー３０５を含む。本明細書において、この例は、地図ビュー３０５と呼ばれる従属ビューにおける１つの探索結果を示す。探索フィールド３０６は、本明細書でコンテンツクリア・アイコン・ビュー３０７と呼ばれる従属ビューを含み、これは、ユーザがビュー３０７のコンテンツクリア・アイコンに対して特定の動作（例えば、シングルタッチ・ジェスチャ又はシングルタップ・ジェスチャ）を実行した場合に探索フィールドのコンテンツをクリアする。ホーム列３１０は、連絡先アプリケーション、電子メール・アプリケーション、ウェブブラウザ及びｉＰｏｄ（登録商標）ミュージックインタフェースにそれぞれ対応する従属ビュー３１０−１、３１０−２、３１０−３及び３１０−４を含む。
【００４１】
タッチ・サブイベント３０１−１は、最も外側のビュー３０２において表現される。タッチ・サブイベント３０１−１の位置が探索結果パネル３０４及び地図ビュー３０５の両方の上にあると仮定すると、タッチ・サブイベントは、それぞれ３０１−２及び３０１−３としてもこれらのビュー上にさらに表現される。タッチ・サブイベントの能動的関与ビューは、ビュー探索結果パネル３０４、地図ビュー３０５及び最も外側のビュー３０２を含む。図３Ｂ及び図３Ｃを参照して、サブイベント配信及び能動的関与ビューに関する追加の情報を以下に提供する。
【００４２】
ビュー（及び対応するプログラム・レベル）はネストされうる。言い換えると、ビューは他のビューを含みうる。従って、第１ビューに関連するソフトウェア要素（群）（例えば、イベント・レコグナイザ）は、第１ビュー内のビューに関連する１つ以上のソフトウェア要素を含むか又はそれにリンクされうる。アプリケーションに関連するビューもあれば、グラフィカルユーザインタフェース、ウィンドウマネージャ等の上位レベルのＯＳ要素に関連するビューもある。
【００４３】
図３Ｂは、一部の実施形態に係るイベント処理のための例示的なコンポーネント（例えば、イベント処理コンポーネント３９０）を示すブロック図である。一部の実施形態において、（図１Ａ及び図１Ｂの）メモリ１１１は、（例えば、オペレーティングシステム１１８における）イベント・レコグナイザ・グローバルメソッド３１１と、個別のアプリケーション１３２−１とを含む。
【００４４】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド３１１は、イベント・モニタ３１２と、ヒット・ビュー判定モジュール３１３と、アクティブイベント・レコグナイザ判定モジュール３１４と、イベント・ディスパッチャ・モジュール３１５とを含む。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド３１１はイベント配信システム１３０内に配置される。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド３１１はオペレーティングシステム１１８において実装される。これに代えて、イベント・レコグナイザ・グローバルメソッド３１１はアプリケーション１３２−１において実装される。さらに他の実施形態において、イベント・レコグナイザ・グローバルメソッド３１１は、スタンドアロン・モジュール又はメモリ１１１に格納された別のモジュール（例えば、接触／動作モジュール（不図示））の一部として実装される。
【００４５】
イベント・モニタ３１２は、センサ１３０、タッチセンサ・ディスプレイ１５６及び／又は入力デバイス１２８からイベント情報を受信する。イベント情報は、イベント（例えば、マルチタッチ・ジェスチャ若しくはデバイス１０２又は１０４の動きの一部であるタッチセンサ・ディスプレイ１５６におけるユーザ・タッチ）及び／又はサブイベント（例えば、タッチセンサ・ディスプレイ１５６にわたるタッチの移動）に関する情報を含む。例えば、タッチ・イベントについてのイベント情報は、タッチの位置及びタイムスタンプのうちの１つ以上を含む。同様に、スワイプ・イベントについてのイベント情報は、スワイプの位置、タイムスタンプ、方向及び速度のうちの２つ以上を含む。センサ１３０、タッチセンサ・ディスプレイ１５６及び入力デバイス１２８は、イベント及びサブイベント情報をイベント・モニタ３１２に直接又は周辺インタフェースを介して送信し、イベント・モニタ３１２はイベント情報を読み出し、格納する。センサ１３０は、近接センサ、加速度計（群）、ジャイロスコープ、マイク及びビデオカメラのうちの１つ以上を含む。一部の実施形態において、センサ１３０は、入力デバイス１２８及び／又はタッチセンサ・ディスプレイ１５６も含む。
【００４６】
一部の実施形態において、イベント・モニタ３１２は、所定の間隔で、センサ１３０及び／又は周辺インタフェースに要求を送信する。これに応答して、センサ１３０及び／又は周辺インタフェースはイベント情報を送信する。他の実施形態において、センサ１３０及び周辺インタフェースは、重大イベント（例えば、所定の雑音閾値を超え且つ／又は所定の期間よりも長い期間の入力の受信）があった場合にのみイベント情報を送信する。
【００４７】
イベント・モニタ３１２は、イベント情報を受信し、イベント情報を配信する先のアプリケーション１３２−１及びアプリケーション１３２−１のアプリケーション・ビュー３１６−２を判定する。
【００４８】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド３１１は、ヒット・ビュー判定モジュール３１３及び／又はアクティブイベント・レコグナイザ判定モジュール３１４も含む。
【００４９】
ヒット・ビュー判定モジュール３１３は、タッチセンサ・ディスプレイ１５６が２つ以上のビューを表示する場合にイベント又はサブイベントが行われた１つ以上のビュー内の位置を判定するためのソフトウェア・プロシージャを提供する。ビューは、ユーザがディスプレイ上で見られる制御及び他の要素から構成される。
【００５０】
アプリケーション１３２−１に関連するユーザインタフェースの別の態様は、本明細書においてアプリケーション・ビュー又はユーザインタフェース・ウィンドウと呼ばれることもあるセット・ビュー３１６であり、このビューにおいて、情報が表示され、タッチ・ベースのジェスチャが発生する。タッチが検出される（各アプリケーションの）アプリケーション・ビューは、アプリケーションのビュー階層内の特定のビューに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれてもよく、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【００５１】
ヒット・ビュー判定モジュール３１３は、イベント及び／又はサブイベントに関連する情報を受信する。アプリケーションが階層に編成された複数のビューを有する場合に、ヒット・ビュー判定モジュール３１３は、イベント又はサブイベントを処理すべき階層の最下位のビューとしてヒット・ビューを識別する。ほとんどの状況において、ヒット・ビューは、開始イベント又はサブイベント（すなわち、ジェスチャを形成するイベント及び／又はサブイベントのシーケンスの最初のイベント又はサブイベント）が発生する最下位レベルのビューである。ヒット・ビューがヒット・ビュー判定モジュールにより識別されると、ヒット・ビューは典型的に、ヒット・ビューとして識別された同一のタッチ又は入力ソースに関する全てのイベント及び／又はサブイベントを受信する。
【００５２】
アクティブイベント・レコグナイザ判定モジュール３１４は、イベント及び／又はサブイベントの特定のシーケンスを受信すべきであるビュー階層内の１つ以上のビューを判定する。一部の適用状況において、アクティブイベント・レコグナイザ判定モジュール３１４は、ヒット・ビューのみがイベント及び／又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、アクティブイベント・レコグナイザ判定モジュール３１４は、イベント又はサブイベントの物理的な位置を含む全てのビューが能動的関与ビューであることを判定し、それ故、全ての能動的関与ビューがイベント及び／又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、タッチ・イベント及び／又はサブイベントが１つの特定のビューに関連する領域に全体的に制限されるとしても、階層の上位レベルのビューは、能動的関与ビューとして依然として存在する。
【００５３】
イベント・ディスパッチャ・モジュール３１５は、イベント情報を（本明細書では「ジェスチャ・レコグナイザ」とも呼ばれる）イベント・レコグナイザ（例えば、イベント・レコグナイザ３２０−１）に振り分ける。アクティブイベント・レコグナイザ判定モジュール３１４を含む実施形態において、イベント・ディスパッチャ・モジュール３１５は、アクティブイベント・レコグナイザ判定モジュール３１４により判定されたイベント・レコグナイザにイベント情報を配信する。一部の実施形態において、イベント・ディスパッチャ・モジュール３１５はイベント情報をイベントキューに格納し、イベント情報は個別のイベント・レコグナイザ３２０（又は個別のイベント・レコグナイザ３２０のイベント受信部３３１）により読み出される。
【００５４】
一部の実施形態において、アプリケーション１３２−１は、アプリケーションがアクティブであるか又は実行中の場合にタッチセンサ・ディスプレイ１５６に表示される現在のアプリケーション・ビュー（群）を示すアプリケーション内部状態３１７を含む。一部の実施形態において、デバイス／グローバル内部状態１３４は、現在アクティブであるアプリケーション（群）を判定するためにイベント・レコグナイザ・グローバルメソッド３１１により使用され、アプリケーション内部状態３１７は、イベント情報を配信する先のアプリケーション・ビュー３１６を判定するためにイベント・レコグナイザ・グローバルメソッド３１１により使用される。
【００５５】
一部の実施形態において、アプリケーション内部状態３１７は、アプリケーション１３２−１が実行を再開する場合に使用される再開情報と、アプリケーション１３２−１により表示中の情報を示すか又は表示の準備が整っている情報を示すユーザインタフェース状態情報と、ユーザがアプリケーション１３２−１の前の状態又はビューに戻ることを可能にする状態キューと、ユーザにより行われた前の動作のリドゥ／アンドゥ・キューとのうちの１つ以上のような追加の情報（例えば、図３Ｃの３４４）を含む。一部の実施形態において、アプリケーション内部状態３１７は、コンテキスト情報／テキスト及びメタデータ３１８をさらに含む。
【００５６】
一部の実施形態において、アプリケーション１３２−１は１つ以上のアプリケーション・ビュー３１６を含み、各アプリケーション・ビューは、アプリケーションのユーザインタフェースの個別のビュー内で発生するタッチ・イベントを処理するための命令を含む。アプリケーション１３２−１の少なくとも１つのアプリケーション・ビュー３１６は、１つ以上のイベント・レコグナイザ３２０と１つ以上のイベント・ハンドラ３２２とを含む。典型的に、個別のアプリケーション・ビュー３１６は、複数のイベント・レコグナイザ３２０と複数のイベント・ハンドラ３２２とを含む。他の実施形態において、イベント・レコグナイザ３２０のうちの１つ以上は、ユーザインタフェース・キット（不図示）又はアプリケーション１３２−１がメソッド及び他の属性を継承する上位レベルのオブジェクトのような、分離したモジュールの一部である。一部の実施形態において、個別のアプリケーション・ビュー３１６は、データ更新部、オブジェクト更新部、ＧＵＩ更新部及び／又はイベント・データ受信部のうちの１つ以上も含む。
【００５７】
個別のイベント・レコグナイザ３２０−１は、イベント・ディスパッチャ・モジュール３１５からイベント情報を受信し、イベント情報からイベントを識別する。イベント・レコグナイザ３２０−１は、イベント受信部３３１とイベント比較部３３２とを含む。
【００５８】
イベント情報は、イベント（例えば、タッチ）又はサブイベント（例えば、タッチの移動）に関する情報を含む。イベント又はサブイベントに依存して、イベント情報は、イベント又はサブイベントの位置等の追加の情報も含む。イベント又はサブイベントがタッチの動きに関係する場合に、イベント情報は、サブイベントの速度及び方向も含んでもよい。一部の実施形態において、イベントは１つの方向から別の方向（例えば、縦長方向から横長方向又はその逆）へのデバイスの回転を含み、イベント情報は、デバイスの現在の（デバイスの姿勢とも呼ばれる）方向に関する対応する情報を含む。
【００５９】
イベント比較部３３２は、イベント情報を（本明細書では「イベント定義」とも呼ばれる）１つ以上の所定のジェスチャ定義と比較し、その比較に基づいて、イベント又はサブイベントを判定するか、若しくはイベント又はサブイベントの状態を判定又は更新する。一部の実施形態において、イベント比較部３３２は、（上述したように、本明細書では「イベント定義」とも呼ばれる）１つ以上のジェスチャ定義３３３を含む。ジェスチャ定義３３３は、例えばジェスチャ１（３３４−１）及びジェスチャ２（３３４−２）等であるジェスチャ（例えば、イベント及び／又はサブイベントの所定のシーケンス）の定義を含む。一部の実施形態において、ジェスチャ定義３３３のサブイベントは、例えばタッチ開始、タッチ終了、タッチ移動、タッチ・キャンセル及び複数のタッチを含む。一例において、ジェスチャ１（３３４−１）の定義は、表示されたオブジェクトに対するダブルタップである。ダブルタップは、例えばジェスチャの所定のフェーズについての表示オブジェクトへの第１タッチ（タッチ開始）と、ジェスチャの次の所定のフェーズについての第１リフトオフ（タッチ終了）と、ジェスチャの後続する所定のフェーズについての表示オブジェクトへの第２タッチ（タッチ開始）と、ジェスチャの最後の所定のフェーズについての第２リフトオフ（タッチ終了）とを含む。別の例において、ジェスチャ２（３３４−２）の定義は、表示オブジェクトのドラッグである。例えばドラッグは、表示オブジェクトへのタッチ（又は接触）と、タッチセンサ・ディスプレイ１５６にわたるタッチの移動と、タッチのリフトオフ（タッチ終了）とを含む。
【００６０】
一部の実施形態において、イベント・レコグナイザ３２０−１はイベント配信３３５のための情報も含む。イベント配信３３５のための情報は、対応するイベント・ハンドラ３２２に対する参照を含む。オプションとして、イベント配信３３５のための情報は、動作−対象ペア（群）を含む。一部の実施形態において、ジェスチャ（又はジェスチャの一部）の認識に応答して、イベント情報（例えば、動作メッセージ（群））は動作−対象ペア（群）により識別された１つ以上の対象に送信される。他の実施形態において、ジェスチャ（又はジェスチャの一部）の認識に応答して、動作−対象ペアが起動される。
【００６１】
一部の実施形態において、ジェスチャ定義３３３は、個別のユーザインタフェース・オブジェクトに対するジェスチャの定義を含む。一部の実施形態において、イベント比較部３３２は、どのユーザインタフェース・オブジェクトがサブイベントに関連するかを判定するためにヒット・テストを実行する。例えば、３つのユーザインタフェース・オブジェクトがタッチセンサ・ディスプレイ１５６に表示されるアプリケーション・ビューにおいて、タッチセンサ・ディスプレイ１５６でタッチが検出された場合に、イベント比較部３３２は、もしあるならば、３つのユーザインタフェース・オブジェクトのうちのどれがタッチ（イベント）に関連するかを判定するためにヒット・テストを実行する。各表示オブジェクトが個別のイベント・ハンドラ３２２に関連するならば、イベント比較部３３２は、ヒット・テストの結果を使用して、そのイベント・ハンドラ３２２が起動されるべきかを判定する。例えばイベント比較部３３２は、ヒット・テストを始動するイベント及びオブジェクトに関連するイベント・ハンドラ３２２を選択する。
【００６２】
一部の実施形態において、個別のジェスチャの定義３３３は、イベント及び／又はサブイベントのシーケンスがイベント・レコグナイザのイベントのタイプに対応するか否かが判定されるまでイベント情報の配信を遅延させる遅延動作も含む。
【００６３】
一連のイベント及び／又はサブイベントがジェスチャ定義３３３のいずれのイベントとも合致しないことを個別のイベント・レコグナイザ３２０−１が判定する場合に、個別のイベント・レコグナイザ３２０−１はイベント失敗状態になり、その後、個別のイベント・レコグナイザ３２０−１はタッチ・ベースのジェスチャの後続のイベント及び／又はサブイベントを無視する。この状況において、ヒット・ビューに対してアクティブのままである他のイベント・レコグナイザがあるならば、これらのイベント・レコグナイザは実行中のタッチ・ベースのジェスチャのイベント及び／又はサブイベントを追跡及び処理し続ける。
【００６４】
一部の実施形態において、個別のイベント・レコグナイザ３２０−１はイベント・レコグナイザ状態３３６を含む。イベント・レコグナイザ状態３３６は、個別のイベント・レコグナイザ３２０−１の状態を含む。イベント・レコグナイザ状態の例については、図４Ａ〜図４Ｄを参照して以下にさらに詳細に説明する。
【００６５】
一部の実施形態において、イベント・レコグナイザ状態３３６はレコグナイザ・メタデータ及び属性３３７−１を含む。一部の実施形態において、レコグナイザ・メタデータ及び属性３３７−１は、Ａ）イベント配信システムが能動的関与イベント・レコグナイザへのイベント及び／又はサブイベント配信をどのように実行すべきかを示す設定可能な属性、フラグ及び／又はリスト、Ｂ）イベント・レコグナイザが互いにどのように相互作用するかを示す設定可能な属性、フラグ及び／又はリスト、Ｃ）イベント・レコグナイザがイベント情報をどのように受信するかを示す設定可能な属性、フラグ及び／又はリスト、Ｄ）イベント・レコグナイザがジェスチャをどのように認識してもよいかを示す設定可能な属性、フラグ及び／又はリスト、Ｅ）イベント及び／又はサブイベントがビュー階層の種々のレベルに配信されるかを示す設定可能な属性、フラグ及び／又はリスト、Ｆ）対応するイベント・ハンドラ３２２に対する参照のうちの１つ以上を含む。
【００６６】
一部の実施形態において、イベント・レコグナイザ状態３３６はイベント／タッチ・メタデータ３３７−２を含む。イベント／タッチ・メタデータ３３７−２は、検出された個別のイベント／タッチに関するイベント／タッチ情報を含み、ジェスチャ定義３３３に対応する。イベント／タッチ情報は、個別のイベント／タッチの位置、タイムスタンプ、速度、方向、距離、倍率（又は倍率の変更）及び角度（又は角度の変更）のうちの１つ以上を含む。
【００６７】
一部の実施形態において、個別のアプリケーション・ビューは１つ以上のデリゲート３２１を含む。個別のデリゲート３２１は、個別のイベント・レコグナイザ３２０に割り当てられる。これに代えて、個別のイベント・レコグナイザ３２０は対応するデリゲート３２１を有するが、デリゲート３２１は必ずしも実行時に個別のレコグナイザ３２０に割り当てられる必要はなく、イベント・レコグナイザに対するデリゲートはアプリケーションの実行前に確立されてもよい（例えば、イベント・レコグナイザに対するデリゲートは、アプリケーション・ビューのデリゲート属性により示され、対応するアプリケーション・ビュー３１６が初期化された場合に確立されてもよい）。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた（又は対応する）デリゲートを有しない。対応するデリゲートがないイベント・レコグナイザは、イベント認識の排他性を統治するデフォルト規則のようなデフォルト規則に従って実行する。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた（又は対応する）デリゲートを複数有する。デリゲートは、対応するイベント・レコグナイザの挙動を変更し、複数のイベント・レコグナイザの挙動を調整するためにも使用可能である。以下に説明する一部の実施形態において、デリゲートは、個別のイベント・レコグナイザに割り当てられた場合に、個別のイベント・レコグナイザの挙動の複数の側面を変更する。
【００６８】
一部の実施形態において、個別のイベント・レコグナイザ３２０は、ジェスチャの１つ以上の特定のイベント及び／又はサブイベントが認識された場合に、個別のイベント・レコグナイザ３２０に関連するイベント・ハンドラ３２２を起動する。一部の実施形態において、個別のイベント・レコグナイザ３２０は、イベントに関連するイベント情報をイベント・ハンドラ３２２に配信する。
【００６９】
イベント・ハンドラ３２２は、起動された場合に、データの作成及び／又は更新と、オブジェクトの作成及び更新と、表示情報の準備及びディスプレイ１２６又はタッチセンサ・ディスプレイ１５６に表示するためのその表示情報の送信とのうちの１つ以上を実行する。
【００７０】
一部の実施形態において、個別のアプリケーション・ビュー３１６−２はビュー・メタデータ３２３を含む。ビュー・メタデータ３２３は、ビューに関するデータを含む。オプションとして、ビュー・メタデータは、イベント・レコグナイザに対するイベント及び／又はサブイベントの配信に影響を及ぼす以下の属性を含む。
●ビューに対して設定された場合に、ビューだけでなくビュー階層におけるその先祖に関連するイベント・レコグナイザへのイベント及び／又はサブイベント配信を防止する停止属性３２４−１。
●ビューに対して設定された場合に、そのビューに関連するイベント・レコグナイザへのイベント及び／又はサブイベント配信を防止するが、ビュー階層におけるそのビューの先祖へのイベント及び／又はサブイベント配信を許可するスキップ属性３２４−２。
●ビューに対して設定された場合に、ビューがヒット・ビューでない限り、ビューに関連するイベント・レコグナイザへのイベント及び／又はサブイベントの配信を防止するヒット以外スキップ属性３２４−３。上述したように、ヒット・ビュー判定モジュール３１３は、サブイベントを処理すべき階層における最下位ビューとしてヒット・ビューを識別する。
●他のビュー・メタデータ３２４−４。
【００７１】
一部の実施形態において、ビュー階層内の第１能動的関与ビューは、その第１能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成されうる。この挙動は、スキップ属性３２４−２を実現できる。スキップ属性がアプリケーション・ビューに対して設定された場合に、個別のサブイベントの配信は、ビュー階層の他の能動的関与ビューに関連するイベント・レコグナイザに対して依然として実行される。
【００７２】
これに代えて、ビュー階層内の第１能動的関与ビューは、第１能動的関与ビューがヒット・ビューでない限り、第１能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、条件付きのヒット以外スキップ属性３２４−３を実現できる。
【００７３】
一部の実施形態において、ビュー階層内の第２能動的関与ビューは、第２能動的関与ビューに関連するイベント・レコグナイザ及び第２能動的関与ビューの先祖に関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、停止属性３２４−１を実現できる。
【００７４】
タッチセンサ・ディスプレイにおけるユーザ・タッチのイベント処理に関する上記説明は、入力デバイスを有する電子デバイス１０２又は１０４を動作させるための他の形式のユーザ入力にも当てはまり、ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるジェスチャを定義するイベント及び／又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、タッチパッドにおけるユーザ移動、タップ、ドラッグ、クロール等、ペンスタイラス入力、デバイスの移動（例えば、回転）、音声命令、検出された眼球運動、バイオメトリック入力及び／又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【００７５】
図３Ｃは、一部の実施形態に係るジェスチャ・レコグナイザ（例えば、イベント処理コンポーネント３９０）の例示的なクラス及びインスタンスを示すブロック図である。
【００７６】
ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、１つ以上のイベント・レコグナイザ３４０を有する。一部の実施形態において、個別のイベント・レコグナイザ（例えば、３４０−２）はイベント・レコグナイザクラスである。個別のイベント・レコグナイザ（例えば、３４０−２）は、イベント・レコグナイザ固有コード３４１（例えば、イベント・レコグナイザの動作を定義する命令の集合）と、状態マシン３４２とを含む。
【００７７】
一部の実施形態において、ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）のアプリケーション状態３１７は、イベント・レコグナイザのインスタンスを含む。イベント・レコグナイザの各インスタンスは、状態（例えば、イベント・レコグナイザ状態３３６）を有するオブジェクトである。個別のイベント・レコグナイザ・インスタンスの「実行」は、対応するイベント・レコグナイザ固有コード（例えば、３４１）を実行し、イベント・レコグナイザ・インスタンス３４３の状態３３６を更新又は維持することにより実現される。イベント・レコグナイザ・インスタンス３４３の状態３３６は、イベント・レコグナイザ・インスタンスの状態マシン３４２の状態３３８を含む。
【００７８】
一部の実施形態において、アプリケーション状態３１７は、各々がアプリケーションのビューと結び付けられた（「アタッチされた」とも言われる）イベント・レコグナイザに対応する複数のイベント・レコグナイザ・インスタンス３４３を含む。一部の実施形態において、アプリケーション状態３１７は個別のイベント・レコグナイザ（例えば、３４０−２）の複数のインスタンス（例えば、３４３−１〜３４３−Ｌ）を含む。一部の実施形態において、アプリケーション状態３１７は、複数のイベント・レコグナイザ（例えば、３４０−１〜３４０−Ｒ）のインスタンス３４３を含む。
【００７９】
一部の実施形態において、ジェスチャ・レコグナイザの個別のインスタンス３４３−２はイベント・レコグナイザ状態３３６を含む。上述したように、イベント・レコグナイザ状態３３６は、レコグナイザ・メタデータ及び属性３３７−１とイベント／タッチ・メタデータ３３７−２とを含む。イベント・レコグナイザ状態３３６は、ジェスチャ・レコグナイザの個別のインスタンス３４３−２がアタッチされるビューを示すビュー階層参照（群）３３７−３も含む。
【００８０】
一部の実施形態において、レコグナイザ・メタデータ及び属性３３７−１は、以下を含むか、又は以下の部分集合又は上位集合を含む。
●イベント・レコグナイザに対して設定された場合に、イベント・レコグナイザがジェスチャを認識した時にイベント配信システムが（例外リスト３５３に列挙された他の任意のイベント・レコグナイザを除く）能動的関与ビューの他の任意のイベント・レコグナイザへのイベント及び／又はサブイベントの配信を停止すべきであることを示す排他性フラグ３３９。対応する排他性フラグ３３９により示されるように、イベント又はサブイベントを受信することにより特定のイベント・レコグナイザが排他的状態になる場合に、後続のイベント及び／又はサブイベントは、排他的状態のイベント・レコグナイザ（だけでなく、例外リスト３５３に列挙された他の任意のイベント・レコグナイザ）にのみ配信される。
●排他性例外リスト３５３。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態３３６に含まれる場合に、このリスト３５３は、個別のイベント・レコグナイザが排他的状態に入った後でもイベント及び／又はサブイベントを受信し続けるイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。例えば、シングルタップ・イベントに対するイベント・レコグナイザが排他的状態になり、現在の関与ビューがダブルタップ・イベントに対するイベント・レコグナイザを含む場合に、リスト３５３は、シングルタップ・イベントが検出された後でもダブルタップ・イベントが認識されるようにダブルタップ・イベント・レコグナイザを列挙する。従って、排他性例外リスト３５３は、イベント・レコグナイザがイベント及び／又はサブイベントの共通のシーケンスを共有する相異なるジェスチャを認識することを許可する。例えば、シングルタップ・ジェスチャ認識は、他のイベント・レコグナイザによるダブル又はトリプル・タップジェスチャの後続の認識を排除しない。
●待ちリスト３５１。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態３３６に含まれる場合に、このリスト３５１は、個別のイベント・レコグナイザが個別のイベントを認識できる前にイベント失敗状態又はイベント・キャンセル済状態にならなければならないイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。実質的に、列挙されたイベント・レコグナイザは、イベントを認識する優先順位が待ちリスト３５１を有するイベント・レコグナイザより高い。
●イベント・レコグナイザに対して設定された場合に、イベント及び／又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されるまで、イベント・レコグナイザが（タッチ開始サブイベント又はフィンガーダウン・サブイベント及び後続のイベントを含む）イベント及び／又はサブイベントをイベント・レコグナイザの個別のヒット・ビューに送信するのを遅延させる遅延タッチ開始済フラグ３５２。このフラグは、ジェスチャが認識される場合にヒット・ビューがイベント及び／又はサブイベントの何れかを参照するのを防止するために使用されうる。イベント・レコグナイザがジェスチャを認識できない場合に、タッチ開始済サブイベント（及び後続のタッチ終了サブイベント）はヒット・ビューに配信されうる。一例において、そのようなサブイベントをヒット・ビューに配信することにより、ユーザインタフェースは、オブジェクトに関連する動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
●イベント・レコグナイザに対して設定された場合に、サブイベントのシーケンスがこのイベント・レコグナイザのイベントのタイプに対応しないと判定されるまで、イベント・レコグナイザがサブイベント（例えば、タッチ終了サブイベント）をイベント・レコグナイザの個別のヒット・ビュー又はレベルに送信するのを遅延させる遅延タッチ終了フラグ３６３。これは、ジェスチャが後で認識される場合にヒット・ビューがタッチ終了サブイベントに作用するのを防止するために使用されうる。タッチ終了サブイベントが送信されない限り、キャンセルされたタッチはヒット・ビュー又はレベルに送信されうる。イベントが認識されるならば、アプリケーションによる対応する動作が実行され、タッチ終了サブイベントはヒット・ビュー又はレベルに配信される。
●イベント・レコグナイザに対して設定された場合に、イベント及び／又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されている場合、イベント・レコグナイザにタッチ又は入力のキャンセルをイベント・レコグナイザの個別のヒット・ビューに送信させるタッチ・キャンセル・フラグ３６４。ヒット・ビューに送信されたタッチ又は入力のキャンセルは、先のイベント及び／又はサブイベント（例えば、タッチ開始済サブイベント）がキャンセルされたことを示す。タッチ又は入力のキャンセルにより、イベント・レコグナイザの状態は（図４Ｂの）イベント・キャンセル済状態４１８に入る。
【００８１】
一部の実施形態において、１つ以上のイベント・レコグナイザは、イベント・レコグナイザがイベントを認識する後までサブイベントのシーケンスのうち１つ以上のサブイベントを配信することを遅延するように適合されうる。この挙動は遅延イベントを反映する。例えば、複数のタップ・ジェスチャが可能であるビューのシングルタップ・ジェスチャを検討する。この場合に、タップ・イベントは「タップ＋遅延」レコグナイザになる。実質的に、イベント・レコグナイザがこの挙動を実現する場合に、イベント・レコグナイザは、サブイベントのシーケンスが実際にそのイベント定義に対応することが確実になるまでイベント認識を遅延させる。この挙動は、キャンセルされたイベントに受信者ビューが適切に応答できない場合に適切でありうる。一部の実施形態において、イベント・レコグナイザは、サブイベントのシーケンスがそのイベント定義に対応しないことをイベント・レコグナイザが確信するまでイベント認識状態を個別の能動的関与ビューに更新することを遅延させる。遅延タッチ開始済フラグ３５２、遅延タッチ終了フラグ３６３及びタッチ・キャンセル・フラグ３６４は、サブイベント配信技術だけでなく、イベント・レコグナイザ及びビュー状態情報更新を特定の要望に合わせて調整するために提供される。
【００８２】
一部の実施形態において、レコグナイザ・メタデータ及び属性３３７−１は、以下を含むか、若しくは以下の部分集合又は上位集合を含む。
●個別のイベント・レコグナイザ・インスタンス（例えば、３４３−２）に対する状態マシン（例えば、３４２）の状態を示す状態マシンの状態／フェーズ３３８。状態マシンの状態／フェーズ３３８は、以下に説明するように「イベント可能」、「イベント認識済」及び「イベント失敗」等の種々の状態値を有しうる。これに代えて又はこれに加えて、状態マシンの状態／フェーズ３３８は、タッチ・データ構造が以前のタッチ・データ構造により参照されていない新しいタッチを定義することを示す「タッチ・フェーズ開始済」等の種々のフェーズ値を有しうる。「タッチ・フェーズ移動済」値は、定義されているタッチが以前の位置から移動したことを示す。「タッチ・フェーズ静止」値は、タッチが同一の位置に留まっていることを示しうる。「タッチ・フェーズ終了済」値は、タッチが終了したこと（例えば、ユーザがマルチタッチ・ディスプレイの面から自身の指を離したこと）を示しうる。「タッチ・フェーズ・キャンセル済」値は、タッチがデバイスによりキャンセルされたことを示す。キャンセルされたタッチは、必ずしもユーザにより終了されたわけではないタッチであるが、デバイスはそれを無視することを判定したものである。例えばデバイスは、タッチが意図せずに生成されている（すなわち、ポータブル・マルチタッチ対応デバイスをポケットに入れた結果）と判定し、そのためタッチを無視できる。状態マシンの状態／フェーズ３３８の各値は本明細書では（「ジェスチャ・レコグナイザ状態値」と呼ばれる）整数であってもよい。
●ジェスチャ又はジェスチャの一部としてイベント又はタッチを認識することに応答して個別のイベント・レコグナイザ・インスタンスが識別された動作メッセージを送信する先の対象を各ペアが識別する動作−対象ペア（群）３４５。
●デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられた場合の対応するデリゲートに対する参照であるデリゲート３４６。デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられない場合に、デリゲート３４６はヌル値を含む。
●個別のイベント・レコグナイザ・インスタンスが有効にされるかを示す有効属性３４７。一部の実施形態において、個別のイベント・レコグナイザ・インスタンスが有効でない（例えば、無効である）場合に、個別のイベント・レコグナイザ・インスタンスはイベント又はタッチを処理しない。
【００８３】
一部の実施形態において、例外リスト３５３はまた、非排他的なイベント・レコグナイザにより使用されうる。特に非排他的イベント・レコグナイザがイベント又はサブイベントを認識した場合に、後続のイベント及び／又はサブイベントは、イベント又はサブイベントを認識したイベント・レコグナイザの例外リスト３５３に列挙された排他的イベント・レコグナイザを除く現在アクティブなビューに関連する排他的イベント・レコグナイザに配信されない。
【００８４】
一部の実施形態において、イベント・レコグナイザは、不要なイベント及び／又はサブイベントがヒット・ビューに配信されるのを防止するために遅延タッチ終了フラグ３６３と共にタッチ・キャンセル・フラグ３６４を利用するように構成されうる。例えば、シングルタップ・ジェスチャの定義とダブルタップ・ジェスチャの前半とは同一である。シングルタップ・イベント・レコグナイザがシングルタップを正常に認識すると、不要な動作が行われうる。遅延タッチ終了フラグが設定されたならば、シングルタップ・イベントが認識されるまで、シングルタップ・イベント・レコグナイザはサブイベントをヒット・ビューに送信しないようにされる。また、シングルタップ・イベント・レコグナイザの待ちリストがダブルタップ・イベント・レコグナイザを識別してもよく、これによって、ダブルタップ・イベント・レコグナイザがイベント不可能状態になるまで、シングルタップ・イベント・レコグナイザがシングルタップを認識しないようにする。待ちリストを使用することにより、ダブルタップ・ジェスチャが実行される場合にシングルタップに関連する動作の実行を回避する。その代わり、ダブルタップ・イベントの認識に応答して、ダブルタップに関連する動作のみが実行される。
【００８５】
タッチセンサ面におけるユーザ・タッチの形式を特に参照すると、上述したように、タッチ及びユーザ・ジェスチャは瞬時である必要がない動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含みうる。しかし、タッチ・データ構造は、特定の時刻のタッチの状態（すなわち、より一般的には任意の入力ソースの状態）を定義する。従って、タッチ・データ構造に格納された値はシングルタッチの間に変更されてもよく、それにより異なる時点のシングルタッチの状態がアプリケーションに伝達される。
【００８６】
各タッチ・データ構造は種々のエントリを含みうる。一部の実施形態において、タッチ・データ構造は、以下のような、若しくは以下の部分集合又は上位集合のようなイベント／タッチ・メタデータ３３７−２のタッチ固有エントリに少なくとも対応するデータを含みうる。
●（ビューがインスタンス化されたため）タッチ・データ構造が特定のビューに対する第１タッチを定義するかを示す「ビューに対する第１タッチ」エントリ３４８。
●タッチ・データ構造が関連する特定の時刻（例えば、タッチの時刻）を示す「タイムスタンプ」情報を含む「タッチ毎の情報」エントリ３４９。オプションとして、「タッチ毎の情報」エントリ３４９は、対応するタッチの位置等の他の情報を含む。
●最初のタッチの位置で連続して実行されたタップ数を示すオプションの「タップ・カウント」エントリ３５０。タップは、特定の位置でのタッチセンシティブパネルへの迅速な指の押下及び持ち上げとして定義されうる。指がパネルの同一の位置で迅速に連続して再度押下及び解放されるならば、複数の連続したタップが発生しうる。イベント配信システム１３０は、タップをカウントし、「タップ・カウント」エントリ３５０を介してこの情報をアプリケーションに中継できる。同一の位置における複数のタップは、タッチ対応インタフェースに対する有用で覚えやすいコマンドとみなされることがある。従って、タップをカウントすることにより、イベント配信システム１３０は、アプリケーションからの何らかのデータ処理を再度軽減できる。
【００８７】
従って、各タッチ・データ構造は、特定の時刻に個別のタッチ（又は他の入力ソース）により発生していること（例えば、タッチが静止しているか、移動しているか等）だけでなく、タッチに関連する他の情報（位置等）を定義できる。従って、各タッチ・データ構造は、特定の瞬間の特定のタッチの状態を定義できる。同一の時刻を参照する１つ以上のタッチ・データ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義できるタッチ・イベント・データ構造に追加されうる（上述したように、いくつかのタッチ・データ構造は、終了して、もはや受信されていないタッチも参照してもよい）。複数のタッチ・イベント・データ構造は、ビューで発生しているタッチを記述する連続した情報をソフトウェアに提供するために、時間の経過と共にビューを実現するソフトウェアに送信されうる。
【００８８】
オプションとしてマルチタッチ・ジェスチャを含む複雑なタッチ・ベースのジェスチャを処理する機能は、種々のソフトウェア・アプリケーションをさらに複雑にしうる。いくつかの例において、このような追加の複雑さは、高度な所望のインタフェース機能を実現するのに必要でありうる。例えばゲームは、同時に複数のボタンを押下したり、若しくは加速度計データをタッチセンサ面におけるタッチと組み合わせたりすることを必要とすることが多いので、種々のビューで発生する複数の同時のタッチを処理する機能を必要としうる。しかし、いくつかのより単純なアプリケーション及び／又はビューは、高度なインタフェース機能を要求する必要がない。例えば単純なソフトボタン（すなわち、タッチセンサ・ディスプレイに表示されるボタン）は、マルチタッチ機能ではなくシングルタッチで十分に動作しうる。これらの例において、基礎となるＯＳは、シングルタッチ（例えば、ソフトボタンへのシングルタッチ又はシングルタップ）のみで動作可能であることが意図されるビューに関連するソフトウェア・コンポーネントに不必要な又は過剰なタッチ・データ（例えば、マルチタッチ・データ）を送信しうる。ソフトウェア・コンポーネントは、このデータを処理する必要がありうるので、シングルタッチのみが関連するビューに関連するとしても、複数のタッチを処理するソフトウェア・アプリケーションの全ての複雑さを特徴とする必要がありうる。従来、マウスインタフェース環境（すなわち、種々のボタン等）でプログラムするのが容易であったソフトウェア・コンポーネントがマルチタッチ環境でかなり複雑になりうるので、これによりデバイスに対してソフトウェアを開発するコストが増加しうる。
【００８９】
複雑なタッチ・ベースのジェスチャを認識する際の複雑さを軽減するために、デリゲートは、一部の実施形態に従ってイベント・レコグナイザの挙動を制御するために使用されうる。以下に説明するように、デリゲートは、例えば対応するイベント・レコグナイザ（又はジェスチャ・レコグナイザ）がイベント（例えば、タッチ）情報を受信できるか、対応するイベント・レコグナイザ（又はジェスチャ・レコグナイザ）が状態マシンの初期状態（例えば、イベント可能状態）から別の状態に遷移できるか、及び／又は他のイベント・レコグナイザ（群）（又はジェスチャ・レコグナイザ（群））がイベントを認識することを阻止せずに又はイベントを認識する他のイベント・レコグナイザ（群）（又はジェスチャ・レコグナイザ（群））により阻止されずに、対応するイベント・レコグナイザ（又はジェスチャ・レコグナイザ）がイベント（例えば、タッチ）を対応するジェスチャとして同時に認識できるかを判定できる。
【００９０】
しかし、タッチセンサ面に対するユーザ・タッチの評価及び処理の複雑さに関する上記説明は、電子デバイス１０２又は１０４を動作させるための全ての形式のユーザ入力にも当てはまる。ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるイベントを定義するイベント及び／又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、デバイスの回転又は他の移動、タップ、ドラッグ、スクロール等のユーザの移動、ペンスタイラスの入力、音声命令、検出された眼球運動、バイオメトリック入力、検出されたユーザの生理学的変化及び／又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【００９１】
図４Ａ〜図４Ｄは、一部の実施形態に係る例示的な状態マシンのためのフローチャートである。ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザと連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは典型的に、所定の期間内に発生する簡単なジェスチャ（例えば、タップ又はスワイプ・ジェスチャ）を認識する際に有用であり、より本質的には、ジェスチャ認識の際に１つの動作メッセージのみ又は動作メッセージの１つの集合のみがアプリケーションに配信される必要があるジェスチャを認識するためのものである。連続ジェスチャ・レコグナイザは、タッチの移動を含む（及び従ってタッチ位置の追跡を必要とする）ジェスチャ（例えば、パン、ピンチ又は回転ジェスチャ）を認識する際に有用であり、より本質的には、動作メッセージのシーケンスがジェスチャの間にアプリケーションに配信される必要があるジェスチャを認識するためのものである。一部の実施形態において、離散イベント・レコグナイザ状態マシン４００及び連続イベント・レコグナイザ状態マシン４０２は異なる状態を有する。
【００９２】
図４Ａは、一部の実施形態に係る３つの状態を含む離散イベント・レコグナイザ状態マシン４００を示す。受信したイベント及び／又はサブイベントに基づいてイベント・レコグナイザ状態マシン３４２の状態遷移を管理することにより、イベント・レコグナイザはイベント定義を効果的に表現する。例えば、タップ・ジェスチャは、２つのサブイベント又は場合によっては３つのサブイベントのシーケンスにより効果的に定義されうる。第１に、タッチが検出されるべきであり、これはサブイベント１となる。例えば、タッチ・サブイベントは、イベント・レコグナイザ状態マシン３４２を有するイベント・レコグナイザを含むビューにおいてユーザの指がタッチセンサ面にタッチしていることでありうる。第２に、タッチがどの所与の方向にも実質的に移動せず（例えば、タッチ位置の任意の移動が所定の閾値よりも小さく、これは例えばディスプレイにおいて距離（例えば、５ｍｍ）又は画素数（例えば、５画素）として測定されうる）、遅延が十分に短いオプションの測定済遅延はサブイベント２である。最後に、タッチ終了（例えば、タッチセンサ面からユーザの指を離すこと）はサブイベント３である。これらのサブイベントを受信することに基づいて状態間を遷移するようにイベント・レコグナイザ状態マシン３４２をコーディングすることにより、イベント・レコグナイザ状態マシン３４２は、タップ・ジェスチャイベント定義を効果的に表現する。離散イベント・レコグナイザ状態マシン４００は、上述したタップ・ジェスチャを認識するように構成されたイベント・レコグナイザ状態マシン３４２の例示的な実現例である。
【００９３】
イベントのタイプに関係なく、（離散イベント・レコグナイザ状態マシン４００として実現されたイベント・レコグナイザ状態マシンを含む）イベント・レコグナイザ状態マシン３４２は、イベント可能状態４１０で始まり、これはイベント・レコグナイザ状態マシンの初期状態を示す。イベント・レコグナイザ状態マシン３４２は、受信されるイベント及び／又はサブイベントに依存して残りのいずれかの状態に進みうる。
【００９４】
イベント可能状態４１０から始まって、ジェスチャ定義の第１イベント又はサブイベントでないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン４００はイベント失敗状態４３０に遷移する。
【００９５】
イベント可能状態４１０から始まって、自身がジェスチャに対するジェスチャ定義を含むイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン４００はイベント認識済状態４２０に遷移する。しかし、受信したイベント又はサブイベントがジェスチャに対するジェスチャ定義を含むとしても、離散イベント・レコグナイザ状態マシン４００は対応するイベント・レコグナイザのメタデータ（例えば、属性）、対応するデリゲートにより判定された１つ以上の値及び／又はアプリケーション状態に従ってイベント失敗状態４３０に遷移しうる。
【００９６】
一部の実施形態において、イベント認識済状態４２０に遷移した後、対応するイベント・レコグナイザは、遅延フラグ（例えば、遅延タッチ終了フラグ３６３）をチェックする（４４１）。遅延フラグがオンであるならば（４４１においてＹＥＳ）、対応するイベント・レコグナイザは、遅延フラグがオフにされるまでイベント情報の配信を遅延させる（４４２）。
【００９７】
一部の実施形態において、対応するイベント・レコグナイザは待ちリスト３５１を含み、対応するイベント・レコグナイザは所定の状態に到達するために待ちリスト３５１に列挙されたイベント・レコグナイザを待つ。例えば、ビューがシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを含む場合に、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザが失敗するのを待つように構成されうる。実際には、シングルタップ・ジェスチャ・レコグナイザがイベント認識済状態４２０に遷移するには、ダブルタップ・ジェスチャ・レコグナイザがイベントを認識することに失敗したことが必要である（又はそれを条件としている）。その結果、タップ・イベントがある場合に、タップ・イベントがマルチタップ・ジェスチャの一部でない限り、シングルタップ・ジェスチャ・レコグナイザはタップ・イベントを認識する。
【００９８】
遅延及び待ち（４４２）の後、存在するならば、対応するジェスチャ・レコグナイザはイベントをアプリケーションに配信する（４４３）。一部の実施形態において、イベントは動作メッセージの形式で配信される。一部の実施形態において、動作メッセージは動作−対象ペア（群）３４５に従って配信される。一部の実施形態において、対応するジェスチャ・レコグナイザは動作−対象ペア（群）３４５を起動する。
【００９９】
図４Ｂは、一部の実施形態に係る６つの状態を含む連続イベント・レコグナイザ状態マシン４０２を示す。
【０１００】
上述したように、連続イベント・レコグナイザ状態マシン４０２は、イベント可能状態４１０から始まる。
【０１０１】
イベント可能状態４１０から始まって、ジェスチャ定義のイベント及び／又はサブイベントの開始シーケンスの一部でないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン４００はイベント失敗状態４３０に遷移する。
【０１０２】
イベント可能状態４１０から始まって、所与のジェスチャ定義のイベント（群）及び／又はサブイベント（群）の開始シーケンスの一部であるイベント又はサブイベントが受信されたならば、連続イベント・レコグナイザ状態マシン４０２はイベント開始済状態４１２に遷移する。離散ジェスチャ・レコグナイザ４００と同様に、受信したイベント又はサブイベントがジェスチャ定義のイベント（群）及び／又はサブイベント（群）の開始シーケンスの一部を含むとしても、連続イベント・レコグナイザ状態マシン４０２は、対応するイベント・レコグナイザのメタデータ（例えば、属性）、対応するデリゲートにより判定された１つ以上の値及び／又はアプリケーション状態に従ってイベント失敗状態４３０に遷移しうる。
【０１０３】
イベント開始済状態４１２から、受信された次のイベント又はサブイベントが中間イベント又はサブイベントであるが所与のジェスチャ定義の最後のイベント又はサブイベントでないならば、連続イベント・レコグナイザ状態マシン４０２はイベント変更済状態４１４に遷移して留まる。連続イベント・レコグナイザ状態マシン４０２は、受信したイベント及び／又はサブイベントのシーケンスがジェスチャ定義の一部であり続ける限り、イベント変更済状態４１４に留まりうる。連続イベント・レコグナイザ状態マシン４０２は、いずれかの時点でイベント変更済状態４１４であり、ジェスチャ定義の一部でないイベント又はサブイベントを受信したならば、イベント失敗状態４３０に遷移し、それにより、（存在する場合に）現在のイベントはこのイベント・レコグナイザ（すなわち、連続イベント・レコグナイザ状態マシン４０２に対応するイベント・レコグナイザ）に対応するイベントのタイプでないことを判定する。一方、連続イベント・レコグナイザ状態マシン４０２は、イベント開始済状態４１２又はイベント変更済状態４１４であり、ジェスチャ定義の最後のイベント又はサブイベントを受信したならば、イベント終了済状態４１６に遷移し、それによって、正常なイベント認識を完了する。
【０１０４】
一部の実施形態において、各ジェスチャ・レコグナイザ状態はジェスチャ・レコグナイザ状態値を有する。一部の実施形態において、（離散イベント・レコグナイザ状態マシン４００に対する）イベント認識済状態４２０及び（連続イベント・レコグナイザ状態マシン４０２に対する）イベント終了済状態４１６は、１つのタイプのジェスチャ・レコグナイザによるジェスチャの認識に応答するように構成されたソフトウェア・コンポーネントが他のタイプのジェスチャ・レコグナイザにも応答できるように、同一のジェスチャ・レコグナイザ状態値を有する。
【０１０５】
イベント開始済状態４１２又はイベント変更済状態４１４の間、（例えば、着呼等のオペレーティングシステム１１８又は制御アプリケーション１２４において事前に定義された）所定の割り込みイベントが発生した場合に、連続イベント・レコグナイザ状態マシン４０２はイベント・キャンセル済状態４１８に遷移する。
【０１０６】
ジェスチャ・レコグナイザのタイプに関わらず、各ジェスチャ・レコグナイザ（例えば、３４３）は、対応するイベント・レコグナイザ状態マシン（例えば、３４２）がイベント可能状態４１０に戻るように再設定されうる。
【０１０７】
図４Ｃ及び図４Ｄは、一部の実施形態に係る状態遷移におけるデリゲートの役割を示す。図４Ｃ及び図４Ｄにおいて、１つ以上のデリゲートによる動作（又は行われる決定）は、陰影付きのボックスにより示される（例えば、４５０〜４５６）。
【０１０８】
図４Ｃは、一部の実施形態に係る離散イベント・レコグナイザ状態マシン４００の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン４００は、対応するデリゲートを有する特定の離散イベント・レコグナイザに対応する。
【０１０９】
イベント可能状態４１０から始まって、イベント又はサブイベントが検出されたならば、イベント・レコグナイザに対応するデリゲートは、イベント・レコグナイザがイベント又はサブイベントを受信すべきか（４５０）を決定する。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止する値をデリゲートが返したならば、対応するイベント・レコグナイザは、イベント又はサブイベントを受信しない（か、イベント又はサブイベントを無視する）。その結果、対応するイベント・レコグナイザはイベント可能状態４１０に留まる。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止するデリゲートが存在しないならば、対応するイベント・レコグナイザのデフォルトの挙動は、イベント又はサブイベントを受信することである。
【０１１０】
なお、イベント・レコグナイザの集合のデリゲートによる「受信すべきか」の動作４５０は、どのイベント・レコグナイザがタッチセンサ・ディスプレイ又はタッチセンサ面に対するどのタッチを受信するかを判定するために使用されうる。例えば、個別に且つ同時に２つのオブジェクトの位置を変更するため又は２つの異なるオブジェクトを選択するためにユーザが２つのタッチを使用できるようにするビューにおいて、２つのイベント・レコグナイザのデリゲートは、１つのイベント・レコグナイザが２つのタッチのうちの第１タッチのみを受信することを許可し、第２イベント・レコグナイザが２つのタッチのうちの第２タッチのみを受信することを許可するように構成されうる。従って、２つのタッチの各々に関する全ての情報は、対応するデリゲートによりそのタッチを受信することを許可されたイベント・レコグナイザにのみへ宛てられる。かなり複雑なマルチタッチ入力は、どのタッチがどのイベント・レコグナイザにより処理されるかを判定する複数のイベント・レコグナイザ及び対応するデリゲートを使用することにより認識及び処理されうる。
【０１１１】
イベント・レコグナイザがイベント又はサブイベントを受信することを許可されたならば、イベント・レコグナイザに対応するデリゲート（又は制御アプリケーション１２４又はオペレーティングシステム１１８）は、イベント・レコグナイザによるイベント又はサブイベントの認識が、イベントを既に認識している別のイベント・レコグナイザにより阻止される（４５１）。この阻止の初期レベルは、デフォルトの排他性規則に基づき、デリゲートにより上書きされうる。イベント又はサブイベントの認識が阻止されたならば、対応するデリゲート（又はオペレーティングシステム１１８又は制御アプリケーション１２４）は、イベント・レコグナイザによるイベントの同時認識がデリゲートにより判定された１つ以上の値に従って許可されるか（４５２）も決定する。例えば、イベント・レコグナイザがイベントを最初に認識したイベント・レコグナイザの排他性例外リスト３５３にあるならば、デリゲートは、両方のイベント・レコグナイザによる同時認識を許可する。別の例において、イベント・レコグナイザの排他性フラグ３３９が設定されないならば、デリゲートは両方のイベント・レコグナイザによる同時認識を許可する。同時認識が許可されないならば、イベント・レコグナイザはイベント失敗状態４３０に遷移する。
【０１１２】
対応するイベント・レコグナイザがイベント又はサブイベントを認識することを阻止されないならば（４５１においてＮＯ）、若しくは同時認識が許可されるならば（４５２においてＹＥＳ）、対応するイベント・レコグナイザは、イベント又はサブイベントが、対応するジェスチャ定義に合致するか（４５３）を判定する。イベント又はサブイベントが対応するジェスチャ定義に合致しないならば（４５３においてＮＯ）、対応するジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。
【０１１３】
イベント又はサブイベントが対応するジェスチャ定義に合致するならば（４５３においてＹＥＳ）、対応するデリゲート（又はオペレーティングシステム１１８又は制御アプリケーション１２４）は、デリゲートにより判定された１つ以上の値に従ってイベント可能状態４１０から遷移できるか（「開始すべきか」４５４）を決定する。イベント・レコグナイザがイベント可能状態４１０から遷移することをデリゲートにより許可されないならば（４５４においてＮＯ）、対応するイベント・レコグナイザはイベント失敗状態４３０になる。イベント・レコグナイザがイベント可能状態４１０から遷移することを許可されるならば（４５４においてＹＥＳ）、対応するイベント・レコグナイザはイベント認識済状態４２０に遷移する。
【０１１４】
対応するイベント・レコグナイザがイベント認識済状態４２０に遷移する場合に、対応するイベント・レコグナイザ（又はオペレーティングシステム１１８又は制御アプリケーション１２４）は、他のイベント・レコグナイザによるイベント又はサブイベントの認識を許可するか（４５５）も決定する。一部の実施形態において、イベント・レコグナイザのうちの少なくとも１つのイベント・レコグナイザのデリゲート（又はアプリケーション）が同時認識を許可するように属性を設定しない限り、デフォルトは他の全てのイベント・レコグナイザが同一のイベントを認識することを防止することである。イベント又はサブイベントを認識したイベント・レコグナイザに対応するデリゲートが、他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可すること（４５５においてＹＥＳ）を判定したならば、デリゲート（又はオペレーティングシステム１１８又は制御アプリケーション１２４）は、イベント又はサブイベントを同時に認識できるように他のイベント・レコグナイザの属性を設定する（４５６）。他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可しないならば、他のイベント・レコグナイザは、イベント又はサブイベントを認識することを防止される。
【０１１５】
一部の実施形態において、個別のイベント・レコグナイザがイベント又はサブイベントを認識しないようにする前に、そのイベント・レコグナイザのデリゲートは、イベント又はサブイベントの同時認識を許可するかを確認するために呼び出される（４５２を参照）。これらの実施形態において、同時認識は、イベントを認識する第１イベント・レコグナイザのデリゲート又は第２イベント・レコグナイザのデリゲートの何れかにより可能になりうる。図４Ｃの４５２及び４５５により示されるように、これらの実施形態において、同時認識を許可するかに関する決定は、イベントが少なくとも１つのイベント・レコグナイザのイベント定義に合致する場合にのみ行われる。
【０１１６】
上述したデリゲート動作は、アプリケーション・ビュー（又は同時に表示されたビューの集合）により使用されたイベント・レコグナイザの集合に対するデリゲートにおいて実装される場合に、イベント・レコグナイザの相互作用をカスタマイズするために使用されうる。デリゲートは、デフォルトの排他性規則に対する例外を実装でき、その例外以外では、１つのイベント・レコグナイザのみが受信された同一のイベント（群）に基づいてジェスチャを認識することを許可する。デフォルトの排他性規則に対する例外を実装し、それにより互換性のあるイベント・レコグナイザによる同時イベント認識を許可するデリゲートのユーザは、ソフトウェア・アプリケーションにおける多くの有用な機能の実装を容易にする。イベント・レコグナイザの挙動を変更及び制御するためにデリゲートを使用することにより、相互に互換性のあるジェスチャの相互に排他的な集合等の複雑な関係のコンパクト表現及び実装が可能になる。
【０１１７】
図４Ｄは、一部の実施形態に係る連続イベント・レコグナイザ状態マシン４０２の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン４０２は、対応するデリゲートを有する特定の連続イベント・レコグナイザに対応する。図４Ｃに示され、図４Ｃを参照して上述された全てのデリゲートの動作は、対応するデリゲートを有する連続イベント・レコグナイザに等しく適用可能であり、それ故、図４Ｄに示すデリゲートの動作は図４Ｃと同一の参照符号を有する。唯一の相違点は、状態マシンにおける１つの状態の名前が状態マシン４００の「イベント認識済」４２０から状態マシン４０２の「イベント開始済」４１２に変更されたことである。
【０１１８】
対応するイベント・レコグナイザは、上述したようにイベント開始済状態４１２から他の状態に遷移する。簡潔にするために、イベント変更済状態４１４からイベント失敗状態４１６への遷移は示さない。
【０１１９】
以下の表は、上述したイベント・レコグナイザの状態に関する例示的なサブイベント・シーケンス（例えば、シングルタップ）の処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは２つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に受信し認識するように構成される。同時認識は、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲート又は第２タップ・ジェスチャ・レコグナイザに割り当てられたデリゲートにより許可されうる。
2014139816.tif 000003
【０１２０】
サブイベント情報の配信が始まる前（シーケンス番号０）、両方のジェスチャ・レコグナイザはイベント可能状態４１０である。フィンガーダウン・サブイベントを検出し（シーケンス番号１）、遅延を測定した（シーケンス番号２）後であっても、両方のジェスチャ・レコグナイザはイベント可能状態４１０に留まる。フィンガーリフトオフを検出したこと（シーケンス番号３）に応答して、シングルタップ・ジェスチャ・レコグナイザはイベント認識済状態４２０に遷移する。追加の遅延を検出した後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント認識済状態４２０に留まり、リセットされた場合に、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態４１０に戻る。一方、測定された追加の遅延が所定の期間（例えば、ダブルタップ・ジェスチャ・レコグナイザは第２フィンガーダウン・サブイベントを予想する期間）を超える場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。
【０１２１】
以下の表は、１つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは２つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されない。
2014139816.tif 000004
【０１２２】
シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されないため、イベント可能状態４１０に留まる。測定された第２遅延が所定の閾値を超えた場合（シーケンス番号４）に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。
【０１２３】
以下の表は、１つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは２つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可されない。
2014139816.tif 000005
【０１２４】
上述したのと同様に、フィンガーリフトオフの検出（シーケンス番号３）の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態４１０からイベント認識済状態４２０に遷移する。一般に、サブイベント・シーケンスを認識する第１ジェスチャ・レコグナイザは、サブイベント・シーケンスをまだ認識していない他のジェスチャ・レコグナイザがサブイベント・シーケンスを認識するのを阻止する。同時認識が許可されない限り、阻止されたジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。この場合、同時認識が許可されないので、シングルタップ・ジェスチャ・レコグナイザが（シーケンス番号３において）サブイベント・シーケンスを認識した場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移し、リセットされるまでその状態に留まる。
【０１２５】
以下の表は、１つのジェスチャ・レコグナイザの挙動がデリゲートにより変更され、２つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは２つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、開始すること（すなわち、イベント可能状態４１０から遷移すること）を許可されない。
2014139816.tif 000006
【０１２６】
フィンガーリフトオフの検出（シーケンス番号３）の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態４１０からイベント認識済状態４２０に遷移しようとする。しかし、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲートはイベント認識済状態４２０への状態遷移を許可せず、その結果、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。測定された遅延が所定の閾値を超えた場合（シーケンス番号４）に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。
【０１２７】
以下の表は、１つのジェスチャ・レコグナイザの挙動が変更され、２つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは２つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザの失敗を待つ（又は必要とする）。
2014139816.tif 000007
【０１２８】
フィンガーリフトオフの検出（シーケンス番号３）の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態４１０からイベント認識済状態４２０に遷移しようとする。しかし、「待ち」要件又は（ダブルタップ・ジェスチャ・レコグナイザが失敗するという）失敗要件に起因して、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態４２０への遷移を遅延させる。測定された第２遅延が所定の閾値を超える（シーケンス番号４）ことからダブルタップ・ジェスチャ・レコグナイザが失敗した場合に、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態４２０に遷移する。「待ち」要件及び／又は失敗要件は、デリゲートを使用して実装されてもよく、ジェスチャ・レコグナイザにおいて実装されてもよい。
【０１２９】
以下の表は、例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスは、複数の中間サブイベントを含むパン・ジェスチャを含み、ビューは２つのジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びパン・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可される。
2014139816.tif 000008
【０１３０】
サブイベント情報の配信が始まる前（シーケンス番号０）、両方のジェスチャ・レコグナイザはイベント可能状態４１０である。フィンガーダウン・サブイベントを検出し（シーケンス番号１）、遅延を測定した（シーケンス番号２）後であっても、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態４１０に留まるが、その一方で、パン・ジェスチャ・レコグナイザはイベント開始済状態４１２に遷移する。指の移動の検出（シーケンス番号３）に応答して、サブイベントがシングルタップに対するジェスチャ定義に合致しないので、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態４３０に遷移する。その後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント失敗状態４３０に留まる。しかし、パン・ジェスチャ・レコグナイザは、指の移動の検出（シーケンス番号４）に応答してイベント変更済状態４１４に遷移し、一部の実施形態において、指の接触の新しい位置を含む動作メッセージ（群）を送信する。追加の指の移動を検出した（シーケンス番号４及び５）後、パン・ジェスチャ・レコグナイザはイベント変更済状態４１４に留まるが、その一方で、指の移動を検出する度に動作メッセージ（群）を送信する。フィンガーリフトオフが検出された（シーケンス番号６）場合に、パン・ジェスチャ・レコグナイザはイベント終了済状態４１６に遷移する。
【０１３１】
イベント情報のフロー及びイベント・レコグナイザ間の相互作用を考慮すると、図５Ａは、一部の実施形態に係るイベント情報のフローを示すブロック図である。（例えば、オペレーティングシステム１１８又は制御アプリケーション１２４における）イベント・ディスパッチャ・モジュール３１５はイベント情報を受信し、そのイベント情報をアプリケーション（例えば、１３２−１）に送信する。一部の実施形態において、アプリケーション１３２−１は、ビュー階層５０６の複数のビュー（例えば、ビュー３１６に対応する５０８、５１０及び５１２）と、複数のビューにおける複数のジェスチャ・レコグナイザ（５１６−１〜５１６−６）とを含む。アプリケーション１３２−１は、対象−動作ペア（例えば、５２２−１、５２２−２及び５２２−３）における対象値に対応する１つ以上のイベント・ハンドラ５２０も含む。イベント・ディスパッチャ・モジュール３１５は、ヒット・ビュー判定モジュール３１３からヒット・ビュー情報を受信し、ヒット・ビュー（例えば、５１２）又はヒット・ビュー（例えば、５１２）にアタッチされたイベント・レコグナイザ（群）にイベント情報を送信する。一部の実施形態において、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの部分集合のみがイベント情報（又はタッチ情報）を受信することを許可される（又は受信するように構成される）。イベント情報を受信することを許可されたこれらのジェスチャ・レコグナイザは、本明細書において「受信ジェスチャ・レコグナイザ」と呼ばれる。図５Ａにおいて、ジェスチャ・レコグナイザ５１６−１及び５１６−２は、受信ジェスチャ・レコグナイザ５１４の集合内にある。その結果、イベント・ディスパッチャ・モジュール３１５は、受信ジェスチャ・レコグナイザの集合内のジェスチャ・レコグナイザ５１６−１及び５１６−２の両方にイベント情報を送信する。
【０１３２】
一部の実施形態において、ジェスチャ・レコグナイザは、他方のジェスチャ・レコグナイザがイベント又はサブイベントを対応するジェスチャとして認識することを阻止又は防止してもよい。この例において、ジェスチャ・レコグナイザ１（５１６−１）は、ジェスチャ・レコグナイザ２（５１６−２）がイベント又はサブイベントを対応するジェスチャとして認識することを防止する。その結果、この例において、ジェスチャ・レコグナイザ１（５１６−１）のみが動作メッセージ（５１８）を対応する対象−動作ペア（例えば、対象：動作１（５２２−１））に送信する。
【０１３３】
図５Ｂ及び図５Ｃは、一部の実施形態に係るジェスチャ認識方法を示すフローチャートである。図５Ｂは、ジェスチャ・レコグナイザが対応するデリゲートを呼び出すフローチャートを示し、図５Ｃは、ソフトウェア・アプリケーションが個別のジェスチャ・レコグナイザに対応するデリゲートを呼び出すフローチャートを示す。図５Ｂ及び図５Ｃにおいて、各列は各エンティティ又は各コンポーネント（例えば、ソフトウェア・アプリケーション、ジェスチャ・レコグナイザ又はデリゲート）において実行される処理を表す。
【０１３４】
図５Ｂにおいて、ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、複数のビュー（例えば、５０６、５０８、５１０）のうちの１つ以上のビューを表示する（５３０）。複数のビューは、複数のジェスチャ・レコグナイザ（例えば、５１６−１〜５１６−６）を含む。ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる（５３２）。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる（５３３−１）。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる（５３３−２）。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。以下の説明を通じて、割り当てられたデリゲートに対する各参照は、対応するデリゲートをも意味してもよく、デリゲートが割り当てられたジェスチャ・レコグナイザに対する各参照は、特定のデリゲートに対応するジェスチャ・レコグナイザをも意味してもよい。
【０１３５】
ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、１つ以上のイベントを検出し（５３４）、ジェスチャ・レコグナイザ（例えば、３２０）のうちの１つ以上を使用して各イベントを処理する（５３６）。
【０１３６】
個別のイベントは、（１つ以上のジェスチャ・レコグナイザ（例えば３２０）の）個別のジェスチャ・レコグナイザにおいて処理される（５３８）。デリゲートの動作を説明するために、イベントを処理する個別のジェスチャ・レコグナイザが対応するデリゲートを有すると仮定する。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートを呼び出し、割り当てられたデリゲートは、アプリケーション状態に従って１つ以上の値を判定するために実行される（５４０）。それに応答して、個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された１つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する（５４２）。
【０１３７】
ソフトウェア・アプリケーションは、イベントのうちの１つ以上に対応するジェスチャ・レコグナイザのうちの１つ以上から受信された情報に従って実行される（５４４）。
【０１３８】
言い換えると、これらの実施形態において、個別のジェスチャ・レコグナイザは、ジェスチャ・レコグナイザの挙動を判定する１つ以上の値を取得するために、割り当てられたデリゲートを呼び出す。上述したように、対応するデリゲートにより変更されるジェスチャ・レコグナイザの挙動は、タッチ／イベント情報を受信するかどうか、イベント可能状態から遷移するかどうか、及び／又は同時認識を許可するかどうかを含む。（場合によっては、他のジェスチャ・レコグナイザのデリゲートの調整された動作を伴う）デリゲートによる動作はまた、どのジェスチャ・レコグナイザがどのタッチを受信するかを制御し、どのジェスチャ・レコグナイザが「イベント認識済」又は「イベント開始済」状態に遷移することを許可されるかを判定し、同時認識を許可又は無効にすることにより、２つ以上のジェスチャ・レコグナイザの動作を調整する。
【０１３９】
図５Ｃにおいて、ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、複数のビュー（例えば、５０６、５０８、５１０）のうち１つ以上のビューを表示する（５３０）。複数のビューは、複数のジェスチャ・レコグナイザ（例えば、５１６−１〜５１６−６）を含む。ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる（５３２）。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる（５３３−１）。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる（５３３−２）。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。
【０１４０】
ソフトウェア・アプリケーション（例えば、アプリケーション１３２−１）は、１つ以上のタッチを検出し（５３５）、ジェスチャ・レコグナイザのうちの１つ以上を使用して１つ以上のタッチの各々を処理する（５４６）。１つ以上のタッチの各々を処理する際、ソフトウェア・アプリケーションは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する（５４８）。一部の実施形態において、候補ジェスチャ・レコグナイザは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザである（例えば、図５Ａのジェスチャ・レコグナイザ５１６−１、５１６−２及び５１６−３）。
【０１４１】
個別の候補ジェスチャ・レコグナイザに割り当てられたデリゲートは、アプリケーション状態に従って「受信タッチ値」を取得するために実行される（５５０）。「受信タッチ値」は、個別の候補ジェスチャ・レコグナイザがイベント／タッチ情報を受信できるかどうか（例えば、図４Ｃ及び図４Ｄの「受信すべきか」のステップ４５０）を判定するために使用される。
【０１４２】
個別のデリゲートから取得された受信タッチ値に基づいて、受信ジェスチャ・レコグナイザの集合が識別される（５５２）。受信ジェスチャ・レコグナイザの集合は、候補ジェスチャ・レコグナイザの部分集合を含む（５５２）。一部の実施形態において、受信ジェスチャ・レコグナイザの集合は、割り当てられた個別のデリゲートを有しない全ての候補ジェスチャ・レコグナイザを含む。候補ジェスチャ・レコグナイザのうちの２つ以上が対応するデリゲートを有するならば、そのような各候補ジェスチャ・レコグナイザのデリゲートは、候補ジェスチャ・レコグナイザがイベント／タッチ情報を受信できるかを判定するために実行される。候補ジェスチャ・レコグナイザに対応するデリゲートから取得された「受信タッチ値」は、受信ジェスチャ・レコグナイザの集合を識別するために使用される。
【０１４３】
個別のタッチは、受信ジェスチャ・レコグナイザの集合において処理される（５５４）。個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果、イベント又はジェスチャが認識されるならば（図４Ｃ及び図４Ｄの「定義に合致するか」４５３を参照）、個別のジェスチャ・レコグナイザに対応するデリゲート（存在する場合）は、イベント又はジェスチャの認識が許可されるかを判定するために呼び出される。これは、図４Ｃ及び図４Ｄを参照して上述した「開始すべきか」の動作４５４に対応する。デリゲートは、状態遷移が許可されるかを示す１つ以上の値を返す。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された１つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する（５４２）。ソフトウェア・アプリケーションは、個別のタッチに対応するジェスチャ・レコグナイザのうちの１つ以上から受信された情報に従って実行される（５４５）。
【０１４４】
言い換えると、これらの実施形態において、ソフトウェア・アプリケーション（又はオペレーティングシステム１１８又は制御アプリケーション１２４）は、個別のタッチを処理すべき候補ジェスチャ・レコグナイザ（存在する場合）を示す値を取得するために個別の候補ジェスチャ・レコグナイザに対応するデリゲートを呼び出す。さらに、ジェスチャ・レコグナイザの挙動の他の側面は、割り当てられたデリゲートによりさらに変更されうる。
【０１４５】
図６Ａ及び図６Ｂは、一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【０１４６】
方法６００は、１つ以上のイベント・センサ（例えば、１３０）を有し、複数のビュー（例えば、アプリケーション・ビュー３１６）とソフトウェア・アプリケーション（例えば、３１７）のアプリケーション状態とを含むソフトウェア・アプリケーション（例えば、１３２）を実行するように構成された電子デバイス（例えば、デバイス１０２又は１０４）において実行される（６０２）。
【０１４７】
デバイスは、複数のビューのうちの１つ以上のビューを表示する（６０４）。表示された１つ以上のビューの個別のビューは、１つ以上のジェスチャ・レコグナイザ（例えば、イベント・レコグナイザ３２０−１）を含む。一部の実施形態において、表示された１つ以上のビューの少なくとも部分集合は１つ以上のジェスチャ・レコグナイザを含み、表示された１つ以上のビューの残りのビューはジェスチャ・レコグナイザを含まない。
【０１４８】
１つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは、対応するデリゲートを有する。一部の実施形態において、全てのジェスチャ・レコグナイザが対応するデリゲートを有するわけではない（すなわち、一部の実施形態において、一部のジェスチャ・レコグナイザは対応するデリゲートを有さない）。一部の実施形態において、個別のジェスチャ・レコグナイザは２つ以上のデリゲートに対応し、各デリゲートは、別個の条件に対して対応するジェスチャ・レコグナイザに対する別個の値を判定する（例えば、第１デリゲートは「受信すべきか」４５０を判定し、第２デリゲートは「認識が阻止されるか」４５１を判定する等）。一部の実施形態において、２つ以上のジェスチャ・レコグナイザが同一のデリゲートに対応する（例えば、同一のデリゲートを利用する）。
【０１４９】
一部の実施形態において、デバイスは個別のデリゲート（例えば、デリゲート３２１−１）を個別のジェスチャ・レコグナイザ（例えば、３２０−１）に割り当てる（６０６）（例えば、図５Ｂのステップ５３２の説明を参照）。これに代えて、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、それ故、デリゲートは実行時に割り当てられる必要はない。本明細書におけるイベント／ジェスチャ・レコグナイザの割り当てられたデリゲートに対する全ての参照は、イベント／ジェスチャ・レコグナイザの対応するデリゲートに同様に適用可能であることが理解され、対応するデリゲートに対する全ての参照は、割り当てられたデリゲートに等しく適用可能であることが理解される。
【０１５０】
一部の実施形態において、表示された１つ以上のビューは複数のジェスチャ・レコグナイザを含み（６０８）、デバイスは複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる。言い換えると、一部のジェスチャ・レコグナイザは割り当てられたデリゲートを有しなくてもよいので、デバイスはジェスチャ・レコグナイザの個数より少ないデリゲートを有してもよい。
【０１５１】
デバイスは１つ以上のイベントを検出する（６１０）。一部の実施形態において、デバイスは、センサ１３０、入力デバイス１２８及び／又はタッチセンサ・ディスプレイ１５６を使用して１つ以上のイベントを検出する。
【０１５２】
デバイスは、個別のジェスチャ・レコグナイザを使用して１つ以上のイベントの個別のイベントを処理する（６１２）。個別のイベントの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを処理すること（例えば、イベント比較部３３２を使用してイベントとジェスチャ定義３３３とを比較すること）と、アプリケーション状態に従って１つ以上の値を判定するために対応するデリゲートを実行すること（例えば、図５Ｂの５４０）と、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された１つ以上の値に従って、個別のイベントに対応する情報（例えば、ジェスチャ・レコグナイザが「タップ・ジェスチャ」又は「スワイプ・ジェスチャ」等のイベントを認識するかどうか、イベントの位置及びタイムスタンプ等の関連イベント情報、並びに／又は他の追加の情報）をソフトウェア・アプリケーションに条件付きで送信することとを含む。
【０１５３】
一部の実施形態において、デリゲートは、（「開始すべきか」、「受信すべきか」及び「同時認識」等の）イベント・レコグナイザ属性を判定するための命令を有し、実行された場合に１つ以上の対応する値を返す。一部の実施形態において、イベント・レコグナイザ属性に対する値は、アプリケーション状態に従ってソフトウェア・アプリケーションにより設定されうる。一部の実施形態において、属性に対する値は開発者により事前に定義される。一部の実施形態において、個別のイベント／ジェスチャ・レコグナイザの内部属性はデフォルト値を有し、デフォルト値はイベント／ジェスチャ・レコグナイザに対応するデリゲートにより上書きされうる。
【０１５４】
例えば、（例えば、ジェスチャ・レコグナイザの対応するデリゲートにより判定された１つ以上の値であって、ジェスチャ・レコグナイザがイベント可能状態４１０からイベント認識済状態４２０又はイベント開始済状態４１２に遷移できるか、若しくは阻止側のジェスチャ・レコグナイザが存在するにも関わらずジェスチャ・レコグナイザがイベントを同時に認識できるかを示す１つ以上の値に基づいて）ジェスチャ・レコグナイザがイベントを認識することを許可された場合に、デバイスは個別のイベントに対応する情報を送信する。一部の実施形態において、デバイスは、対応するジェスチャ定義又はその一部にイベントが合致する場合にのみ、個別のイベントに対応する情報を送信する。さらに、アプリケーション状態又は他の条件により、個別のジェスチャ・レコグナイザが個別のイベントに対応する情報を送信することが防止されうる。
【０１５５】
デバイスは、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーション（例えば、１３２−１）を実行する（６１４）。例えば、ソフトウェア・アプリケーション（例えば、１３２−１）は複数のイベント・ハンドラ３２２を含み、イベント・ハンドラ３２２のうちの１つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される（例えば、動作−対象ペア３４５に列挙されたイベント・ハンドラ３２２が起動される）。
【０１５６】
一部の実施形態において、１つ以上のイベント・センサ（例えば、１３０）は１つ以上のタッチを検出するように構成されたタッチセンサ面（例えば、１５６又は分離したタッチセンサ面）を含み、１つ以上のイベントは１つ以上のタッチを含み、個別のイベントを処理することは個別のタッチを処理することを含む（６１６）。一部の実施形態において、１つ以上のイベント・センサ（例えば、１３０）は加速度計を含み、１つ以上のイベントは電子デバイスの回転又は他の動きも含む。
【０１５７】
一部の実施形態において、デバイスは、割り当てられたデリゲートにより判定された１つ以上の値に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを条件付きで受信する（６１８）。例えば、個別のジェスチャ・レコグナイザが個別のタッチを受信することを対応するデリゲートにより判定された１つ以上の値（例えば、「受信タッチ値」）が許可する場合にのみ（例えば、図４Ｃ及び図４Ｄにおける「受信すべきか」４５０）、個別のジェスチャ・レコグナイザは個別のタッチを受信する。
【０１５８】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された１つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを含む（６２０）。これらの実施形態において、ステップ６１８において説明したように個別のタッチを条件付きで受信する代わりに、個別のジェスチャ・レコグナイザは個別のタッチを無視する。
【０１５９】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された１つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することを含む（６２２）。これらの実施形態において、個別のタッチが阻止され、それ故、個別のジェスチャ・レコグナイザに到達しないので、ジェスチャ・レコグナイザは、個別のタッチを条件付きで受信するか又は無視する必要がない。一部の実施形態において、個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することは、イベント情報を対応するジェスチャ・レコグナイザに送信しないようにイベント・ディスパッチャ・モジュール３１５に命令することを含む。
【０１６０】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している（例えば、個別のタッチがジェスチャ定義又はその一部に合致する）場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること（例えば、図４Ｃ及び図４Ｄの「開始すべきか」４５４）を含む（６２４）。一部の実施形態において、状態遷移可能値（例えば、「開始すべきか」の値）が状態遷移基準を満たすことを対応するデリゲートにより判定される場合に状態遷移が可能にされる。
【０１６１】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む（６２６）。言い換えると、状態遷移は、対応するデリゲートが遷移を可能にする（例えば、阻止しない）としても、条件付きで可能にされる。例えば、状態遷移の条件は、個別のタッチ／イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ／イベントを受信することを許可されるかどうか、及び／又は個別のタッチ／イベントの認識が阻止されるかどうかを含む。
【０１６２】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、ジェスチャを認識した別のジェスチャ・レコグナイザにより状態遷移が防止／無効にされたときに（条件付きで）無効にすることを含む。特に、ジェスチャ・レコグナイザは、他のジェスチャ・レコグナイザ（群）がイベント認識済状態４２０又はイベント開始済状態４１２に遷移することを１つのジェスチャ・レコグナイザが防止できるようにペアにされうる（又はグループ化されうる）（例えば、第１ジェスチャ・レコグナイザが第２ジェスチャ・レコグナイザを防止するように構成される場合に、第１ジェスチャ・レコグナイザは、イベント／タッチを認識すると、第２ジェスチャ・レコグナイザに対応するデリゲートにより返された値に関わらず第２ジェスチャ・レコグナイザがそのイベント／タッチを認識することを防止する）。
【０１６３】
一部の実施形態において、複数のジェスチャ・レコグナイザは優先順位に基づいて（例えば、コードのシーケンス、インスタンス化のシーケンス、個別のジェスチャ・レコグナイザに対応するビュー階層、若しくは開発者又はソフトウェア・アプリケーションにより割り当てられた優先順位に基づいて）列挙される。２つ以上のジェスチャ・レコグナイザが個別のタッチを同時に認識する場合に、優先順位が最も高いジェスチャ・レコグナイザは、他の全てのジェスチャ・レコグナイザが個別のタッチを認識することを阻止する。
【０１６４】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第２ジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む（６２８）。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、第２ジェスチャ・レコグナイザに対応するデリゲートは、第２ジェスチャ・レコグナイザが第２ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる（例えば、図４Ｃ及び図４Ｄのステップ４５２）。
【０１６５】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む（６３０）。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、ジェスチャ・レコグナイザに対応するデリゲートは、第２ジェスチャ・レコグナイザが第２ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる（例えば、図４Ｃ及び図４Ｄのステップ４５５及び４５６）。
【０１６６】
一部の実施形態において、個別のジェスチャ・レコグナイザにおける個別のタッチを処理することは、第１ジェスチャ・レコグナイザ及び第２ジェスチャ・レコグナイザにそれぞれ対応するデリゲートにより判定された値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む。
【０１６７】
図７Ａ及び図７Ｂは、一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【０１６８】
方法７００は、タッチセンサ面（例えば、１５６）を有し、複数のビュー（例えば、３１６）とソフトウェア・アプリケーション（例えば、３１７）のアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイス（例えば、デバイス１０４）において実行される（７０２）。
【０１６９】
デバイスは、複数のビュー（例えば、３１６）のうちの１つ以上のビューを表示する（７０４）。表示された１つ以上のビューの個別のビューは１つ以上のジェスチャ・レコグナイザ（例えば、３２０−１又は３４３−２）を含み、１つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは対応するデリゲート（例えば、３２１−１又は３４６）を有する。
【０１７０】
デバイスは、タッチセンサ面（例えば、１５６又は１３０）における１つ以上のタッチを検出する（７０６）。１つ以上のタッチはそれぞれ、表示された１つ以上のビュー内のタッチ位置を有する。
【０１７１】
デバイスは、１つ以上のタッチの個別のタッチを処理する（７０８）（例えば、イベント比較部３３２を使用して、個別のタッチがジェスチャ定義３３３に合致するかを判定する（４５３））。個別のタッチを処理することは、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを実行すること（例えば、図５Ｃの５５０）と、受信タッチ値が所定の基準（例えば、一部の実施形態において、所定の基準は、個別のジェスチャ・レコグナイザが受信ジェスチャ・レコグナイザ５５２であるということ）を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること（例えば、５５４）と、個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信すること（例えば、５４２）とを含む（７１０）。
【０１７２】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む（７１２）（例えば、図３Ｂのアプリケーション・ビュー３１６及びレコグナイザ３２０、図５Ａのビュー５０８、５１０及び５１２、並びにジェスチャ・レコグナイザ５１６）。別個のデリゲートは、複数のジェスチャ・レコグナイザの少なくとも部分集合に対応する。オプションとして、デバイスは、複数のジェスチャ・レコグナイザ（例えば、３２０）の少なくとも部分集合に別個のデリゲート（例えば、３２１）を割り当てる。１つ以上のタッチの個別のタッチを処理することは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別すること（例えば、５４８）と、対応するデリゲートを有する候補ジェスチャ・レコグナイザ毎に、アプリケーション状態に従って受信タッチ値を取得するために対応するデリゲートを実行すること（例えば、５５０）と、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む１つ以上の受信ジェスチャ・レコグナイザを識別すること（例えば、５５２）と、受信ジェスチャ・レコグナイザのうちの１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理すること（例えば、５５４）とを含む。
【０１７３】
一部の実施形態において、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの集合を識別することを含む。オプションとして、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、個別のタッチに対応するジェスチャ定義を含むジェスチャ・レコグナイザの集合を識別することを含む。さらに、一部の実施形態において、受信ジェスチャ・レコグナイザの集合を識別することは、対応するデリゲートが受信タッチ基準を満たす個別の受信タッチ値を提供する候補ジェスチャ・レコグナイザの部分集合を識別することを含む（例えば、受信タッチ値は、対応するジェスチャ・レコグナイザが個別のタッチを受信できることを示す）。
【０１７４】
一部の実施形態において、１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って対応するデリゲートを有する個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することと、アプリケーション状態に従って１つ以上の値を判定するためにデリゲートを実行することと、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともにデリゲートにより判定された１つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信することとを含む（７１８）。デバイスは、１つ以上のタッチに対応する、１つ以上の受信ジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する。
【０１７５】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している（例えば、個別のタッチがジェスチャ定義又はその一部に合致する）場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること（例えば、図４Ｃ及び図４Ｄの「開始すべきか」４５４）を含む（７２０）。
【０１７６】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む（７２２）。例えば、状態遷移のための条件は、個別のタッチ／イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ／イベントを受信することを許可されるかどうか、個別のタッチ／イベントの認識が阻止されるかどうか、及び／又はシステムレベルの命令（例えば、シャットダウン処理又はアプリケーションよりも高い優先順位を有する他の処理）が状態遷移を防止するかを含む。
【０１７７】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第２ジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む（７２４）。例えば、第２ジェスチャ・レコグナイザに対応するデリゲートは、第２ジェスチャ・レコグナイザが第２ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可する（例えば、図４Ｃ及び図４Ｄのステップ４５２）。
【０１７８】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理すること（例えば、図４Ｃ及び図４Ｄのステップ４５５及び４５６）を含む（７２６）。
【０１７９】
デバイスは、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する（例えば、５４５）（７１６）。例えば、ソフトウェア・アプリケーション（例えば、１３２−１）は複数のイベント・ハンドラ３２２を含み、イベント・ハンドラ３２２のうちの１つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される（例えば、動作−対象ペア３４５に列挙されたイベント・ハンドラ３２２が起動される）。
【０１８０】
図８Ａ及び図８Ｂは、一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【０１８１】
方法８００は、タッチセンサ面を有し、ソフトウェア・アプリケーションを実行するように構成された電子デバイス（例えば、デバイス１０４）において実行される（８０２）。
【０１８２】
デバイスは、ソフトウェア・アプリケーション（例えば、１３２−１）の１つ以上のビュー（例えば、３１６）を表示する（８０４）。表示された１つ以上のビューは、複数のジェスチャ・レコグナイザ（例えば、３２０）を含む。複数のジェスチャ・レコグナイザは、少なくとも１つの離散ジェスチャ・レコグナイザ（例えば、図４Ａ及び図４Ｃ）と、少なくとも１つの連続ジェスチャ・レコグナイザ（例えば、図４Ｂ及び図４Ｄ）とを含む。
【０１８３】
一部の実施形態において、離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。
【０１８４】
一部の実施形態において、離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して動作メッセージの単一の集合を送信するように構成される。複数の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は複数の動作メッセージを含む。単一の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は単一の動作メッセージを含む。
【０１８５】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態（例えば、図４Ａ〜図４Ｄ）の集合を有する（８２２）。
【０１８６】
一部の実施形態において、離散ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第１集合を有する（８２４）。
●離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態４１０。
●個別のジェスチャの認識に対応するジェスチャ認識済状態４２０。
●離散ジェスチャ・レコグナイザが１つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態４３０。
【０１８７】
一部の実施形態において、連続ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第２集合を有する。
●連続ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態４１０。
●個別のジェスチャの初期認識に対応するジェスチャ開始済状態４１２。
●個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態４１４。
●認識された個別のジェスチャの完了に対応するジェスチャ終了済状態４１６。
●個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態４１８。
●連続ジェスチャ・レコグナイザが１つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態４３０。
【０１８８】
一部の実施形態において、ジェスチャ・レコグナイザ状態は割り当てられた値（例えば、ジェスチャ・レコグナイザ状態値）を有する。一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する（８２６）。
【０１８９】
一部の実施形態において、少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザ及びスワイプ・ジェスチャ・レコグナイザのうちの１つ以上を含み（８２８）、少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの１つ以上を含む。
【０１９０】
一部の実施形態において、少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含み（８３０）、少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【０１９１】
タップ・ジェスチャ・レコグナイザは、タップ・ジェスチャを認識するように構成される。スワイプ・ジェスチャ・レコグナイザは、スワイプ・ジェスチャ（例えば、タッチセンサ面に対するタッチのフリック）を認識するように構成される。長押しジェスチャ・レコグナイザは、長押しジェスチャ（例えば、押下及びタッチの保持）を認識するように構成される。ピンチ・ジェスチャ・レコグナイザは、ピンチ・ジェスチャ（例えば、２つ以上のタッチの接触及び相対的な移動）を認識するように構成される。パン・ジェスチャ・レコグナイザは、パン・ジェスチャ（例えば、タッチ及び１つ以上のタッチの整合性のある移動）を認識するように構成される。回転ジェスチャ・レコグナイザは、回転（例えば、接触及び２つ以上のタッチの回転移動）を認識するように構成される。変換ジェスチャ・レコグナイザは、変換ジェスチャ（例えば、パン、回転及びピンチを表す２つ以上のタッチの同時移動）を認識するように構成される。
【０１９２】
一部の実施形態において、少なくとも１つの離散ジェスチャ・レコグナイザ（例えば上述した離散ジェスチャ・レコグナイザの１つ以上）及び少なくとも１つの連続ジェスチャ・レコグナイザ（例えば、上述した連続ジェスチャ・レコグナイザの１つ以上）は、ソフトウェア開発者がソフトウェアライブラリを使用してこれらをサードパーティ・ソフトウェアに組み込めるようにソフトウェアライブラリに配布される。これと比較して、ビューはビュー・スタイル（例えば、ユーザインタフェース・オブジェクト及びフレームの色、サイズ及び形状）を有する。一部の実施形態において、所定のビュー・スタイルは、ソフトウェア開発者がソフトウェアライブラリ（又はテンプレート）を使用して所定のビュー・スタイルを有するソフトウェア・アプリケーションを開発できるように、ＵＩインタフェースＡＰＩ（例えば、図２の２０４）の一部として配布される。
【０１９３】
デバイスは、１つ以上のタッチを検出する（図８Ａの８０８）。一部の実施形態において、デバイスは、センサ１３０、入力デバイス１２８及び／又はタッチセンサ・ディスプレイ１５６を使用して１つ以上のイベントを検出する。
【０１９４】
デバイスは、１つ以上のジェスチャ・レコグナイザを使用して各タッチを処理する（８１０）。個別のタッチの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること（例えば、イベント比較部３３２を使用してイベントとジェスチャ定義３３３とを比較し、イベントがジェスチャ定義３３３又はその一部に合致するかを判定すること）と、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って１つ以上の動作メッセージの各々をソフトウェア・アプリケーションに条件付きで送信すること（例えば、個別のタッチがジェスチャ定義に合致した場合に動作メッセージを送信すること）とを含む（８１２）。
【０１９５】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有する（８１４）。１つ以上の個別の動作メッセージを条件付きで送信することは、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って１つ以上の個別の動作メッセージを条件付きで送信することを含む。例えば、ソフトウェア・アプリケーションのアプリケーション状態は、１つ以上の個別の動作メッセージを送信することを遅延又は防止しうる（例えば、システムリソースが過度に使用される場合、優先順位がより高い処理が処理される必要がある場合等）。
【０１９６】
デバイスは、タッチのうちの１つに対応するジェスチャ・レコグナイザのうちの１つ以上から受信された１つ以上の動作メッセージに従ってソフトウェア・アプリケーションを実行する（８１６）。例えば、ソフトウェア・アプリケーション（例えば、１３２−１）は複数のイベント・ハンドラ３２２を含み、イベント・ハンドラ３２２のうちの１つ以上はジェスチャ・レコグナイザのうちの１つ以上から受信された動作メッセージに従って起動される。
【０１９７】
一部の実施形態において、デバイスは、個別のジェスチャ・レコグナイザからの追加の情報を要求する（８１８）。ソフトウェア・アプリケーションを実行することは、追加の情報にさらに従ってソフトウェア・アプリケーションを実行することを含む。例えば、個別のジェスチャ・レコグナイザは追加の情報（例えば、サブイベント毎のタイムスタンプ、ジッタ量、速度、方向、期間、倍率、角度等の詳細情報）を提供できる。
【０１９８】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含む（８２０）。
【０１９９】
一部の実施形態によると、図９は、上述したような本発明の原理に従って構成された電子デバイス９００の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図９において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【０２００】
図９に示すように、電子デバイス９００は、１つ以上のイベントを検知するように構成された１つ以上のイベント検知ユニット９０２と、１つ以上のイベント検知ユニット９０２に結合された処理ユニット９０６とを含む。一部の実施形態において、電子デバイスは、処理ユニット９０６に結合された表示ユニット９０４も含む。一部の実施形態において、処理ユニット９０６は、実行ユニット９０８、表示可能ユニット９１０、検出ユニット９１２、イベント処理ユニット９１４、送信ユニット９１６、レコグナイザ可能ユニット９１８、阻止ユニット９２０及び割り当てユニット９２２を含む。
【０２０１】
処理ユニット９０６は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを（例えば、実行ユニット９０８で）実行し、複数のビューのうちの１つ以上のビューの表示を（例えば、表示ユニット９０４に関する表示可能ユニット９１０で）可能にするように構成される。表示された１つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット９０６は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを（例えば、イベント処理ユニット９１４で）処理し、アプリケーション状態に従って１つ以上の値を判定するために対応するデリゲートを（例えば、実行ユニット９０８で）実行し、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された１つ以上の値に従って個別のイベントに対応する情報をソフトウェア・アプリケーションに（例えば、送信ユニット９１６で）条件付きで送信することにより、１つ以上のイベント検知ユニット９０２により検知された１つ以上のイベントを（例えば、検出ユニット９１２で）検出し、個別のジェスチャ・レコグナイザを使用して１つ以上のイベントの個別のイベントを（例えば、イベント処理ユニット９１４で）処理するように構成される。処理ユニット９０６は、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを（例えば、実行ユニット９０８で）実行するように構成される。
【０２０２】
一部の実施形態において、１つ以上のイベント検知ユニット９０８は、１つ以上のタッチを検出するように構成されたタッチセンサ面ユニット（例えば、図１０のタッチセンサ面ユニット１００２）を含み、１つ以上のイベントは１つ以上のタッチを含み、処理ユニット９０６は個別のタッチを（例えば、イベント処理ユニット９１４で）処理するように構成される。
【０２０３】
一部の実施形態において、処理ユニット９０６は、個別のジェスチャ・レコグナイザが対応するデリゲートにより判定された１つ以上の値に従って個別のタッチを条件付きで受信することを（例えば、レコグナイザ可能ユニット９１８で）可能にするように構成される。
【０２０４】
一部の実施形態において、処理ユニット９０６は、対応するデリゲートにより判定された１つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを可能にすることにより個別のタッチを（例えば、イベント処理ユニット９１４及び／又はレコグナイザ可能ユニット９１８で）処理するように構成される。
【０２０５】
一部の実施形態において、処理ユニット９０６は、対応するデリゲートにより判定された１つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することにより個別のタッチを（例えば、イベント処理ユニット９１４及び／又は阻止ユニット９２０で）処理するように構成される。
【０２０６】
一部の実施形態において、処理ユニット９０６は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が対応するデリゲートにより可能にされたときに可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、イベント処理ユニット９１４及び／又はレコグナイザ可能ユニット９１８で）処理するように構成される。
【０２０７】
一部の実施形態において、処理ユニット９０６は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、イベント処理ユニット９１４及び／又は可能ユニット９１８で）処理するように構成される。
【０２０８】
一部の実施形態において、処理ユニット９０６は、第２ジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、イベント処理ユニット９１４で）処理するように構成される。
【０２０９】
一部の実施形態において、処理ユニット９０６は、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、イベント処理ユニット９１４で）処理するように構成される。
【０２１０】
一部の実施形態において、表示された１つ以上のビューは複数のジェスチャ・レコグナイザを含み、処理ユニット９０６は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを（例えば、割り当てユニット９２２で）割り当てるように構成される。
【０２１１】
一部の実施形態によると、図１０は、上述したような本発明の原理に従って構成された電子デバイス１０００の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図１０において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【０２１２】
図１０に示すように、電子デバイス１０００は、１つ以上のタッチを受信するように構成されたタッチセンサ面ユニット１００２と、タッチセンサ面ユニット１００２に結合された処理ユニット１００６とを含む。一部の実施形態において、電子デバイス１０００は、処理ユニット１００６に結合された表示ユニット１００４も含む。一部の実施形態において、処理ユニット１００６は、実行ユニット１００８、表示可能ユニット１０１０、検出ユニット１０１２、タッチ処理ユニット１０１４、送信ユニット１０１６、割り当てユニット１０１８、識別ユニット１０２０及びレコグナイザ可能ユニット１０２２を含む。
【０２１３】
処理ユニット１００６は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを（例えば、実行ユニット１００８で）実行し、複数のビューのうちの１つ以上のビューの表示を（例えば、表示ユニット１００４に関する表示可能ユニット１０１０で）可能にするように構成される。表示された１つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット１００６は、タッチセンサ面ユニット１００２において受信された１つ以上のタッチを（例えば、検出ユニット１０１２で）検出するように構成される。各タッチは、表示されたビューのうちの１つ以上のビュー内に入るタッチ位置を有する。処理ユニット１００６は、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを（例えば、実行ユニット１００８で）実行し、個別のタッチ値が所定の基準を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１０１４で）処理し、個別のタッチに対応する情報をソフトウェア・アプリケーションに（例えば、送信ユニット１０１６で）条件付きで送信することにより１つ以上のタッチの個別のタッチを処理するように構成される。処理ユニット１００６は、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを（例えば、実行ユニット１００８で）実行するように構成される。
【０２１４】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む。処理ユニット１００６は、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を（例えば、識別ユニット１０２０で）識別し、割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎にアプリケーション状態に従って受信タッチ値を取得するために割り当てられたデリゲートを（例えば、実行ユニット１００８で）実行し、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む１つ以上の受信ジェスチャ・レコグナイザを（例えば、識別ユニット１０２０で）識別し、受信ジェスチャ・レコグナイザのうちの１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１０１４で）処理することにより、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを（例えば、割り当てユニット１０１８で）割り当て、１つ以上のタッチの個別のタッチを処理するように構成される。
【０２１５】
一部の実施形態において、処理ユニット１００６は、デリゲートが個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って割り当てられた個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１０１４で）処理し、アプリケーション状態に従って１つ以上の値を判定するために割り当てられたデリゲートを（例えば、実行ユニット１００８で）実行し、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともに割り当てられたデリゲートにより判定された１つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに（例えば、送信ユニット１０１６で）条件付きで送信することにより１つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成され、タッチの１つ以上に対応する、受信ジェスチャ・レコグナイザの１つ以上から受信された情報に従ってソフトウェア・アプリケーションを（例えば、実行ユニット１００８で）実行するように構成される。
【０２１６】
一部の実施形態において、処理ユニット１００６は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに（例えば、レコグナイザ可能ユニット１０２２で）可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【０２１７】
一部の実施形態において、処理ユニット１００６は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに（例えば、レコグナイザ可能ユニット１０２２で）条件付きで可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【０２１８】
一部の実施形態において、処理ユニット１００６は、第２ジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１０１４で）処理するように構成される。
【０２１９】
一部の実施形態において、処理ユニット１００６は、個別のジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された１つ以上の値に従って第２ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１０１４で）処理するように構成される。
【０２２０】
一部の実施形態によると、図１１は、上述したような本発明の原理に従って構成された電子デバイス１１００の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図１１において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【０２２１】
図１１に示すように、電子デバイス１１００は、１つ以上のタッチを受信するように構成されたタッチセンサ面ユニット１１０２と、タッチセンサ面ユニット１１０２に結合された処理ユニット１１０６とを含む。一部の実施形態において、電子デバイス１１００は、処理ユニット１１０６に結合された表示ユニット１１０４も含む。一部の実施形態において、処理ユニット１１０６は、実行ユニット１１０８、表示可能ユニット１１１０、検出ユニット１１１２、タッチ処理ユニット１１１４、送信ユニット１１１６及び要求ユニット１１１８を含む。
【０２２２】
処理ユニット１１０６は、ソフトウェア・アプリケーションを（例えば、実行ユニット１１０８で）実行し、ソフトウェア・アプリケーションの１つ以上のビューの表示を（例えば、表示ユニット１１０４に関する表示可能ユニット１１１０で）可能にするように構成される。表示された１つ以上のビューは複数のジェスチャ・レコグナイザを含み、複数のジェスチャ・レコグナイザは少なくとも１つの離散ジェスチャ・レコグナイザと少なくとも１つの連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。処理ユニット１１０６は、タッチセンサ面ユニット１１０２において受信された１つ以上のタッチを（例えば、検出ユニット１１１２で）検出し、ジェスチャ・レコグナイザのうちの１つ以上を使用して各タッチを（例えば、タッチ処理ユニット１１１４で）処理するように構成される。処理ユニット１１０６は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを（例えば、タッチ処理ユニット１１１４で）処理し、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージをソフトウェア・アプリケーションに（例えば、送信ユニット１１１６で）条件付きで送信することにより個別のタッチを処理するように構成される。処理ユニット１１０６は、タッチのうちの１つ以上に対応するジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従ってソフトウェア・アプリケーションを（例えば、実行ユニット１１０８で）実行するように構成される。
【０２２３】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態の集合を有する。
【０２２４】
一部の実施形態において、離散ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、個別のジェスチャの認識に対応するジェスチャ認識済状態と、離散ジェスチャ・レコグナイザが１つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有する。連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、連続ジェスチャ・レコグナイザが１つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有する。
【０２２５】
一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する。
【０２２６】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有し、処理ユニット１１０６は、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って１つ以上の動作メッセージを（例えば、送信ユニット１１１６で）条件付きで送信するように構成される。
【０２２７】
一部の実施形態において、処理ユニット１１０６は、個別のジェスチャ・レコグナイザからの追加の情報を（例えば、要求ユニット１１１８で）要求し、追加の情報にさらに従ってソフトウェア・アプリケーションを（例えば、実行ユニット１１０８で）実行するように構成される。
【０２２８】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理されたタッチの個数及び位置を含む。
【０２２９】
一部の実施形態において、少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとのうちの１つ以上を含む。少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの１つ以上を含む。
【０２３０】
一部の実施形態において、少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含む。少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【０２３１】
説明の目的で、特定の実施形態を参照して上記説明を行った。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及びその実際的な応用例を最適に説明するために実施形態を選択して説明した。これにより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。
【図１Ａ】
2014139816.tif 000009
【図１Ｂ】
2014139816.tif 000010
【図２】
2014139816.tif 000011
【図３Ａ】
2014139816.tif 000012
【図３Ｂ】
2014139816.tif 000013
【図３Ｃ】
2014139816.tif 000014
【図４Ａ】
2014139816.tif 000015
【図４Ｂ】
2014139816.tif 000016
【図４Ｃ】
2014139816.tif 000017
【図４Ｄ】
2014139816.tif 000018
【図５Ａ】
2014139816.tif 000019
【図５Ｂ】
2014139816.tif 000020
【図５Ｃ】
2014139816.tif 000021
【図６Ａ】
2014139816.tif 000022
【図６Ｂ】
2014139816.tif 000023
【図７Ａ】
2014139816.tif 000024
【図７Ｂ】
2014139816.tif 000025
【図８Ａ】
2014139816.tif 000026
【図８Ｂ】
2014139816.tif 000027
【図９】
2014139816.tif 000028
【図１０】
2014139816.tif 000029
【図１１】
2014139816.tif 000030
【手続補正書】
【提出日】平成26年3月12日(2014.3.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示する工程であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、工程と、
１つ以上のタッチを検出する工程と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理する工程であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項２】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項１に記載の方法。
【請求項３】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有することを特徴とする請求項２に記載の方法。
【請求項４】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項３に記載の方法。
【請求項５】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記１つ以上の個別の動作メッセージを条件付きで送信する工程は、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記１つ以上の個別の動作メッセージを条件付きで送信する工程を含むことを特徴とする請求項１乃至４の何れか１項に記載の方法。
【請求項６】
前記方法は、前記個別のジェスチャ・レコグナイザからの追加の情報を要求する工程をさらに有し、前記ソフトウェア・アプリケーションを実行する工程は、前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項１乃至５の何れか１項に記載の方法。
【請求項７】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの１つ以上を含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの１つ以上を含むことを特徴とする請求項１乃至７の何れか１項に記載の方法。
【請求項９】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項１乃至８の何れか１項に記載の方法。
【請求項１０】
タッチセンサ面と、
１つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記１つ以上のプロセッサにより実行されるように構成された１つ以上のプログラムとを備える電子デバイスであって、
前記１つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、命令と、
１つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項１１】
タッチセンサ面を有する電子デバイスの１つ以上のプロセッサにより実行されるプログラムであって、
前記プログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、命令と、
１つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするプログラム。
【請求項１２】
１つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
ソフトウェア・アプリケーションを実行し、
前記ソフトウェア・アプリケーションの１つ以上のビューの表示を可能にし、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含み、
前記タッチセンサ面ユニットで受信された１つ以上のタッチを検出し、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項１３】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項１２に記載の電子デバイス。
【請求項１４】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有することを特徴とする請求項１３に記載の電子デバイス。
【請求項１５】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項１４に記載の電子デバイス。
【請求項１６】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記処理ユニットは、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記１つ以上の個別の動作メッセージを条件付きで送信するように構成されることを特徴とする請求項１２乃至１５の何れか１項に記載の電子デバイス。
【請求項１７】
前記処理ユニットは、
前記個別のジェスチャ・レコグナイザからの追加の情報を要求し、
前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項１２乃至１６の何れか１項に記載の電子デバイス。
【請求項１８】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項１７に記載の電子デバイス。
【請求項１９】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの１つ以上を含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの１つ以上を含むことを特徴とする請求項１２乃至１８の何れか１項に記載の電子デバイス。
【請求項２０】
前記少なくとも１つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも１つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項１２乃至１９の何れか１項に記載の電子デバイス。
【請求項２１】
タッチセンサ面を有する電子デバイスにより実行されるプログラムであって、
前記プログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの１つ以上のビューを表示するための命令であって、前記表示される１つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも１つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも１つの連続ジェスチャ・レコグナイザとを含む、命令と、
１つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの１つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のタッチの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って１つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することを含む、命令と、
前記タッチの１つ以上に対応する前記ジェスチャ・レコグナイザの１つ以上から受信された１つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを含むことを特徴とするプログラム。
【請求項２２】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項２１に記載のプログラム。
【請求項２３】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第１集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記１つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第２集合を有することを特徴とする請求項２２に記載のプログラム。
【請求項２４】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項２３に記載のプログラム。
【請求項２５】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、
１つ以上の個別の動作メッセージを条件付きで送信することは、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記１つ以上の個別の動作メッセージを条件付きで送信することを含むことを特徴とする請求項２１乃至２４の何れか１項に記載のプログラム。
【外国語明細書】
2014139816000001.pdf