ジェスチャ認識を制御及び変更するためのデリゲートを有するジェスチャ・レコグナイザ
ソフトウェア・アプリケーションは、複数のビューとアプリケーション状態とを含む。方法は、1つ以上のビューを表示することを含む。個別のビューは、個別のジェスチャ・レコグナイザに対する対応するデリゲートを有する個別のジェスチャ・レコグナイザを含む。方法は、1つ以上のイベントを検出することと、個別のジェスチャ・レコグナイザを使用して1つ以上のイベントの個別のイベントを処理することとを含む。個別のイベントの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを処理することと、1つ以上の値を判定するために対応するデリゲートを実行することと、デリゲートにより判定された1つ以上の値に従って個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信することとを含む。方法は、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行することを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にジェスチャ入力を認識するための装置及び方法を含むがそれらに限定されないユーザインタフェース処理に関する。
【背景技術】
【0002】
電子デバイスは一般に、計算デバイスと相互作用するために使用されうるユーザインタフェースを含む。ユーザインタフェースは、ユーザインタフェースの種々の態様と相互作用するためのキーボード、マウス及びタッチセンサ面のような表示及び/又は入力デバイスを含む。入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第1集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプ、ピンチイン、ピンチアウト、2本指スワイプのうちの2つ以上)は、特定の状況(例えば、第1アプリケーションの特定のモード)において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況(例えば、異なるアプリケーション及び/又は第1アプリケーション内の異なるモード又は状況)において適切な入力として認識される。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは、複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要とする可能性がある。これらの問題及び同様の問題は、タッチ・ベースのジェスチャ以外の入力ソースを利用するユーザインタフェースにおいて発生しうる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従って、タッチ・ベースのジェスチャ及びイベントだけでなく、他の入力ソースからのジェスチャ及びイベントを認識する総合的なフレームワーク又はメカニズムを有するのが望ましく、これは計算デバイスの全てのアプリケーション・プログラムの事実上全ての状況又はモードに容易に適応可能であり、アプリケーションが更新された場合又は新しいアプリケーションが計算デバイスに追加された場合にほとんど又は全く修正を必要としない。
【課題を解決するための手段】
【0004】
上述の欠点に対処するために、一部の実施形態によると、1つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューの個別のビューは1つ以上のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、1つ以上のイベントを検出する工程と、前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理する工程とを含む。前記個別のイベントの処理は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のジェスチャ・レコグナイザの前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む。さらに、前記方法は、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0005】
一部の実施形態によると、電子デバイスは、イベントを検出するための1つ以上のイベント・センサと、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、複数のビューとアプリケーション状態とを有するソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、1つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令とをさらに含む。前記個別のジェスチャ・イベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0006】
一部の実施形態によると、コンピュータ可読記憶媒体は、イベントを検出するための1つ以上のイベント・センサを有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、1つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令を含む。前記個別のイベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0007】
一部の実施形態によると、タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出する工程をさらに含む。前記方法は、前記1つ以上のタッチの個別のタッチを処理する工程をさらに含む。前記個別のタッチを処理する工程は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含む。前記個別のタッチを処理する工程はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程を含む。さらに、前記方法は、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0008】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記1つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0009】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記1つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0010】
一部の実施形態によると、タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記ソフトウェア・アプリケーションの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。前記離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、前記連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記方法はまた、1つ以上のタッチを検出する工程と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理する工程とを含む。前記個別のタッチを処理する工程は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、前記方法はさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0011】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、1つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0012】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、1つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。前記個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0013】
一部の実施形態によると、電子デバイスは、1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニットと、前記1つ以上のイベント検知ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記1つ以上のイベント検知ユニットにより1つ以上のイベントを検出し、前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理することを、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【0014】
一部の実施形態によると、電子デバイスは、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された1つ以上のタッチを検出するように構成される。前記処理ユニットは、前記1つ以上のタッチの個別のタッチを処理することを、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【0015】
一部の実施形態によると、電子デバイスは、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、ソフトウェア・アプリケーションを実行し、前記ソフトウェア・アプリケーションの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記処理ユニットは、前記タッチセンサ面ユニットで受信された1つ以上のタッチを検出し、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するように構成される。前記処理ユニットは、個別のタッチを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成される。
【図面の簡単な説明】
【0016】
【図1A】、
【図1B】一部の実施形態に係る電子デバイスを示すブロック図である。
【図2】一部の実施形態に係る例示的な電子デバイスの入出力処理スタックの図である。
【図3A】一部の実施形態に係る例示的なビュー階層を示す図である。
【図3B】一部の実施形態に係るイベント処理のための例示的なコンポーネントを示すブロック図である。
【図3C】一部の実施形態に係るジェスチャ・レコグナイザの例示的なクラス及びインスタンスを示すブロック図である。
【図4A】、
【図4B】、
【図4C】、
【図4D】一部の実施形態に係る例示的な状態遷移マシンを示すフローチャートである。
【図5A】一部の実施形態に係るイベント情報のフローを示すブロック図である。
【図5B】、
【図5C】一部の実施形態に係るジェスチャ認識方法を示す高レベル・フローチャートである。
【図6A】、
【図6B】一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【図7A】、
【図7B】一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【図8A】、
【図8B】一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【図9】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図10】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図11】一部の実施形態に係る電子デバイスの機能ブロック図である。
【発明を実施するための形態】
【0017】
図面を通じて、同様の参照符号は対応する部分を示す。
【0018】
以下、実施形態を詳細に参照する。実施形態の例を添付の図面に示す。以下の詳細な説明において、本発明を完全な理解を提供するために多くの特定の詳細が説明される。しかし、本発明は、これらの特定の詳細を含まずに実施されてもよいことが当業者には明らかであるだろう。他の例において、実施形態の態様を不必要に曖昧にしないために、周知の方法、手順、コンポーネント、回路及びネットワークについては詳細に記載していない。
【0019】
種々の要素を記載するために第1、第2などの用語が本明細書において使用されるが、これらの要素はこれらの用語により限定されるべきではないことが理解されるだろう。これらの用語は、1つの要素を別の要素と区別するためだけに使用される。例えば本発明の範囲から逸脱せずに、第1接触が第2接触と呼ばれてもよく、同様に第2接触が第1接触と呼ばれてもよい。第1接触及び第2接触は両方とも接触であるが同一の接触ではない。
【0020】
本明細書において本発明の説明に使用される専門用語は、特定の実施形態を説明するためのものであり、本発明を限定することを意図しない。本発明の説明及び添付の特許請求の範囲において使用されるように、文脈で別段の明記が無い限り、単数形「a」、「an」及び「the」は複数形を含むことを意図する。本明細書で使用されるような「及び/又は」という用語は、列挙された関連する項目のうちの1つ以上のものの任意且つ全ての可能な組み合わせを参照し、包含することが理解されるだろう。「備える」及び/又は「備えている」という用語は、本明細書において使用される場合に、規定された特徴、数字、ステップ、動作、要素及び/又はコンポーネントの存在を特定するが、1つ以上の他の特徴、数字、ステップ、動作、要素、コンポーネント及び/又はこれらのグループの存在又は追加を除外しないことがさらに理解されるだろう。
【0021】
本明細書で使用されるように、「ならば」という用語は、状況に応じて「場合に」又は「時に」又は「判定したことに応答して」又は「検出したことに応答して」を意味すると解釈される。同様に、「判定されたならば」又は「[規定された状態又はイベント]が検出されたならば」という句は、状況に応じて「判定すると」又は「判定したことに応答して」又は「(規定された状態又はイベント)を検出した時に」又は「(規定された状態又はイベント)を検出したことに応答して」を意味すると解釈される。
【0022】
本明細書で使用されるように、「イベント」という用語は、デバイスの1つ以上センサにより検出された入力を示す。特に、「イベント」という用語はタッチセンサ面におけるタッチを含む。イベントは1つ以上のサブイベントを含む。サブイベントは典型的に、イベントに対する変更を示す(例えば、タッチのタッチ・ダウン、タッチ・ムーブ及びリフトオフはサブイベントでありうる)。1つ以上のサブイベントのシーケンスにおけるサブイベントは、とりわけキー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウス移動、マウスボタン押下、マウスボタン解放、ペンスタイラス・タッチ、ペンスタイラス移動、ペンスタイラス解放、音声命令、検出された眼球運動、バイオメトリック入力及び検出されたユーザの生理学的変化を含むがこれらに限定されない多くの形態を含む。イベントは単一のサブイベント(例えば、デバイスの横方向の短い動き)を含みうるので、本明細書で使用される「サブイベント」という用語はイベントも示す。
【0023】
本明細書で使用されるように、「イベント・レコグナイザ」及び「ジェスチャ・レコグナイザ」という用語は、ジェスチャ又は他のイベント(例えばデバイスの動き)を認識できるレコグナイザを示すために交換可能に使用される。
【0024】
上述したように、入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第1集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプの2つ以上)は、特定の状況(例えば、第1アプリケーションの特定のモード)において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況(例えば、異なるアプリケーション及び/又は第1アプリケーション内の異なるモード又は状況)において適切な入力として認識される。さらに、2つ以上の適切な入力(又はジェスチャ)は、互いに干渉するか又は矛盾しうる(例えば、シングルタップを検出した後に、シングルタップを完全なシングルタップ・ジェスチャとして認識するか又はダブルタップ・ジェスチャの一部として認識するかを決定する必要がある)。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要としうる。
【0025】
タッチセンサ面を有するデバイスで実行するアプリケーションを制御するためにタッチ・ベースのジェスチャを使用する場合に、タッチは時間的側面及び空間的側面の両方を有する。フェーズと呼ばれる時間的側面は、いつタッチが始まったか、それが移動しているか又は静止しているか、並びにいつそれが終了したか、すなわちいつ指が画面から持ち上げられたかを示す。タッチの空間的側面は、タッチが発生したビュー又はユーザインタフェース・ウィンドウの集合である。タッチが検出されるビュー又はウィンドウは、ビュー階層のプログラムレベルに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれ、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【0026】
図1A及び図1Bは、一部の実施形態に係る電子デバイス102、104の種々の実施形態を示すブロック図である。電子デバイス102又は104は、デスクトップ・コンピュータシステム、ラップトップ・コンピュータシステム、ネットブック・コンピュータシステム、移動体電話機、スマートフォン、携帯情報端末又はナビゲーションシステムを含むがこれらに限定されない任意の電子デバイスであってもよい。電子デバイスはまた、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイ(例えば、図1Bのタッチセンサ・ディスプレイ156)を有するポータブル電子デバイス、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイを含むコンピュータ、タッチセンサ面とユーザインタフェースを提示するように構成されたディスプレイとを有するコンピュータ、若しくはコンシューマ電子デバイス、移動体電話機、ビデオゲームシステム、電子音楽プレーヤ、タブレットPC、電子書籍読書システム、電子書籍、PDA、電子オーガナイザ、電子メールデバイス、ラップトップ、ネットブック又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート機器等を含むがこれらに限定されない任意の他の形態の計算デバイスであってもよい。電子デバイス102又は104はユーザインタフェース113を含む。
【0027】
一部の実施形態において、電子デバイス104は、タッチスクリーン・ディスプレイを含む。これらの実施形態において、ユーザインタフェース113は、電子デバイス102及び104と相互作用するためにユーザにより使用されるオンスクリーン・キーボード(不図示)を含みうる。これに代えて、キーボードは電子デバイス104(又は電子デバイス102)から分離した別個のものであってもよい。例えばキーボードは、電子デバイス102又は104に結合された有線又は無線キーボードでありうる。
【0028】
一部の実施形態において、電子デバイス102は、電子デバイス102に結合された、ディスプレイ126と1つ以上の入力デバイス128(例えば、キーボード、マウス、トラックボール、マイク、物理ボタン(群)、タッチパッド等)とを含む。これらの実施形態において、入力デバイス128のうちの1つ以上は、場合によっては電子デバイス102から分離した別個のものであってもよい。例えば、1つ以上の入力デバイスは、場合によっては電子デバイスから分離してもよいキーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの1つ以上を含みうる。オプションとして、デバイス102又は104は、1つ以上の加速度計、ジャイロスコープ、GPSシステム、スピーカ、赤外線(IR)センサ、バイオメトリック・センサ、カメラ等の1つ以上のセンサ130を含んでもよい。なお、入力デバイス128又はセンサ130である種々の例示的なデバイスの上記説明は、本明細書で説明する実施形態の動作に重要なものではなく、本明細書で入力デバイスとして説明される任意の入力デバイス又はセンサ・デバイスはセンサとして同様に適切に説明され、センサとして説明される任意の入力デバイス又はセンサ・デバイスは入力デバイスとして同様に適切に説明される。一部の実施形態において、1つ以上のセンサ130により生成された信号はイベントを検出する入力ソースとして使用される。
【0029】
一部の実施形態において、電子デバイス104は、電子デバイス104に結合された、タッチセンサ・ディスプレイ156(すなわち、タッチセンサ面を有するディスプレイ)と、1つ以上の入力デバイス128とを含む。一部の実施形態において、タッチセンサ・ディスプレイ156は、2つ以上の別個の同時(又は部分的に同時)のタッチを検出する機能を有し、これらの実施形態において、ディスプレイ156は、本明細書においてマルチタッチ・ディスプレイ又はマルチタッチセンサ・ディスプレイと呼ばれる場合もある。
【0030】
本明細書で説明する電子デバイス102又は104の一部の実施形態において、入力デバイス128は電子デバイス102又は104に配置される。他の実施形態において、入力デバイス128のうちの1つ以上は、電子デバイス102又は104から分離した別個のものであり、例えば入力デバイス128のうちの1つ以上は、ケーブル(例えば、USBケーブル)又は無線接続(例えば、Bluetooth(登録商標)接続)により電子デバイス102又は104に結合されうる。
【0031】
入力デバイス128を使用する場合に、又は電子デバイス104のタッチセンサ・ディスプレイ156においてタッチ・ベースのジェスチャを実行する場合に、ユーザは電子デバイス102又は104の1つ以上のCPU110により処理されるサブイベントのシーケンスを生成する。一部の実施形態において、電子デバイス102又は104の1つ以上のCPU110は、イベントを認識するためにサブイベントのシーケンスを処理する。
【0032】
電子デバイス102又は104は典型的に、1つ以上のシングルコア又はマルチコア・プロセッシングユニット(「CPU」又は「CPU群」)110だけでなく、1つ以上のネットワーク又は他の通信インタフェース112とをそれぞれ含む。電子デバイス102又は104は、メモリ111と、コンポーネントを相互接続するための1つ以上の通信バス115とをそれぞれ含む。通信バス115は、(本明細書では不図示の)システムコンポーネントを相互接続し、これらの間の通信を制御する(チップセットと呼ばれる場合もある)回路構成を含む。上記で簡単に説明したように、電子デバイス102又は104は、ディスプレイ(例えば、ディスプレイ126又はタッチセンサ・ディスプレイ156)を含むユーザインタフェース113を含む。さらに、電子デバイス102又は104は典型的に、入力デバイス128(例えば、キーボード、マウス、タッチセンサ面、キーパッド等)を含む。一部の実施形態において、入力デバイス128はオンスクリーン入力デバイス(例えば、表示デバイスのタッチセンサ面)を含む。メモリ111は、DRAM、SRAM、DDRRAM又は他のランダムアクセス固体メモリデバイス等の高速ランダムアクセスメモリを含んでもよく、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス又は他の不揮発性固体記憶デバイス等の不揮発性メモリを含んでもよい。メモリ111は、場合によってはCPU(群)110から離れて配置された1つ以上の記憶デバイスを含みうる。メモリ111又はこれに代えてメモリ111内の不揮発性メモリデバイス(群)は、コンピュータ可読記憶媒体を含む。一部の実施形態において、(電子デバイス102又は104の)メモリ111又はメモリ111のコンピュータ可読記憶媒体は、以下のプログラム、モジュール及びデータ構造、若しくはこれらの部分集合を格納する。
●種々の基本システムサービスを処理し、ハードウェア依存のタスクを実行するプロシージャを含むオペレーティングシステム118。
●1つ以上の個別の通信インタフェース112(有線又は無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等の1つ以上の通信ネットワークとを介して電子デバイス102又は104を他のデバイスにそれぞれ接続するために使用される通信モジュール120。
●ユーザインタフェース・オブジェクトを含むユーザインタフェースをディスプレイ126又はタッチセンサ・ディスプレイ156に表示するために使用されるユーザインタフェース・モジュール122。
●処理(例えば、ヒット・ビュー判定、スレッド管理及び/又はイベント監視等)を制御するために使用される制御アプリケーション124。一部の実施形態において、制御アプリケーション124はランタイム・アプリケーションを含む。他の実施形態において、ランタイム・アプリケーションは制御アプリケーション124を含む。
●オペレーティングシステム118内の種々の別の実施形態において又はアプリケーション・ソフトウェア132において実装されうるイベント配信システム130。しかし、一部の実施形態において、イベント配信システム130の一部の態様はオペレーティングシステム118において実装され、他の態様(例えば、イベント・ハンドラの少なくとも部分集合)はアプリケーション・ソフトウェア132において実装される。
●1つ以上のソフトウェア・アプリケーション(例えば、電子メール・アプリケーション、ウェブブラウザ・アプリケーション、テキストメッセージング・アプリケーション等)を含むアプリケーション・ソフトウェア132。各ソフトウェア・アプリケーションは典型的に、少なくとも実行時にソフトウェア・アプリケーション及びそのコンポーネント(例えば、ジェスチャ・レコグナイザ及びデリゲート)の状態を示すアプリケーション状態を有する。以下に説明するアプリケーション内部状態317(図3B)を参照。
●ソフトウェア・アプリケーション及びこれらのコンポーネント(例えば、ジェスチャ・レコグナイザ及びデリゲート)の状態を示すアプリケーション状態と、タッチセンサ・ディスプレイ156又はディスプレイ126の種々の領域を占有するアプリケーション、ビュー又は他の情報を示す表示状態と、デバイスの種々のセンサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156から取得された情報を含むセンサ状態と、デバイスの位置及び/又は姿勢に関する位置情報とのうちの1つ以上を含むデバイス/グローバル内部状態134。
【0033】
上記の識別された要素のぞれぞれは、上述したメモリデバイスの1つ以上に格納されてもよく、本明細書で説明する機能を実行する命令の集合に対応する。命令の集合は、1つ以上のプロセッサ(例えば、1つ以上のCPU110)により実行されうる。上記の識別されたモジュール又はプログラム(すなわち、命令の集合)は、別個のソフトウェアプログラム、プロシージャ又はモジュールとして実装される必要がないので、これらのモジュールの種々の部分集合は、種々の実施形態において組み合わされうるか又は他のように再構成されうる。一部の実施形態において、メモリ111は、上記で識別されたモジュール及びデータ構造の部分集合を格納してもよい。さらに、メモリ111は、上述されていない追加のモジュール及びデータ構造を格納してもよい。
【0034】
図2は、本発明の一部の実施形態に係る例示的な電子デバイス又は装置(例えば、デバイス102又は104)の入出力処理スタック200の図である。デバイスのハードウェア(例えば、電子回路構成)212は、入出力処理スタック200のベース・レベルにある。ハードウェア212は、図1A及び/又は図1Bに示されたコンポーネント等の種々のハードウェア・インタフェース・コンポーネントを含む。ハードウェア212は、上述のセンサ130のうちの1つ以上も含みうる。入出力処理スタック200の他の全ての要素(132、204〜210)は、ハードウェア212から受信した入力を処理し、ハードウェア・ユーザインタフェース(例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータのうちの1つ以上)を介して提示される種々の出力を生成するソフトウェア・プロシージャ又はソフトウェア・プロシージャの一部である。
【0035】
ドライバ又はドライバの集合210はハードウェア212と通信する。ドライバ210は、ハードウェア212から入力データを受信し、受信した入力データを処理する。コアオペレーティングシステム(「OS」)208はドライバ(群)210と通信できる。コアOS208は、ドライバ(群)210から受信した入力生データを処理する。一部の実施形態において、ドライバ210はコアOS208の一部であるとみなされうる。
【0036】
OSアプリケーション・プログラミング・インタフェース(「OS API」)の集合206は、コアOS208と通信するソフトウェア・プロシージャである。一部の実施形態において、API206は、デバイスのオペレーティングシステムに含まれるが、コアOS208よりも上のレベルにある。API206は、本明細書で説明する電子デバイス又は装置で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース(UI)API204はOS API206を利用できる。デバイスで実行するアプリケーション・ソフトウェア(「アプリケーション」)132は、ユーザと通信するためにUI API204を利用できる。続いて、UI API204は、下位レベルの要素と通信し、最終的に、例えばマルチタッチ・ディスプレイ156である種々のユーザインタフェース・ハードウェアと通信する。
【0037】
入出力処理スタック200の各層は自身よりも下の層を利用できるが、これは必ずしも必要とされない。例えば、一部の実施形態において、アプリケーション132はOS API206と通信することもある。一般に、OS API層206以上の層は、プライベートであるとみなされるので、コアOS208、ドライバ(群)210又はハードウェア212に直接にアクセスしなくてもよい。層内のアプリケーション132及びUI API204は、通常、OS API206を直接に呼び出し、続いて、OS API206は、コアOS208、ドライバ(群)210及びハードウェア212の層にアクセスする。
【0038】
別のように示すと、電子デバイス102又は104の1つ以上のハードウェア要素212と、例えば(図2に示す)ドライバ(群)210、(図2に示す)コアOS(オペレーティングシステム)208、(図2に示す)オペレーティングシステムAPIソフトウェア206及び(図2に示す)アプリケーション・ユーザインタフェースAPIソフトウェア204のような、デバイスで実行するソフトウェアとは、入力デバイス(群)128及び/又はタッチセンサ・ディスプレイ156のうちの1つ以上において、(ジェスチャのサブイベントに対応しうる)入力イベントを検出し、アプリケーション132に配信されるイベントに入力イベントが対応するか及びいつ対応するかを判定するために現在アクティブであるイベント・レコグナイザの集合により使用される(デバイス102又は104のメモリに格納される)種々のデータ構造を生成又は更新する。イベント認識の方法、装置及びコンピュータプログラムの実施形態について、以下にさらに詳細に説明する。
【0039】
図3Aは、この例では最も外側のビュー302に表示された探索プログラムである例示的なビュー階層300を示す。最も外側のビュー302は一般に、ユーザが直接に相互作用しうるユーザインタフェース全体を包含し、例えば以下のような従属ビューを含む。
●探索結果をグループ化し、縦方向にスクロール可能である探索結果パネル304。
●テキスト入力を受け付ける探索フィールド306。
●迅速なアクセスのためにアプリケーションをグループ化するホーム列310。
【0040】
この例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層300におけるビュー・レベルの個数は、階層の相異なる分岐において異なってもよく、1つ以上の従属ビューは下位レベルの従属ビューを有し、1つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。図3Aに示す例を引き続き参照すると、探索結果パネル304は、探索結果毎に分離した(パネル304に従属する)従属ビュー305を含む。本明細書において、この例は、地図ビュー305と呼ばれる従属ビューにおける1つの探索結果を示す。探索フィールド306は、本明細書でコンテンツクリア・アイコン・ビュー307と呼ばれる従属ビューを含み、これは、ユーザがビュー307のコンテンツクリア・アイコンに対して特定の動作(例えば、シングルタッチ・ジェスチャ又はシングルタップ・ジェスチャ)を実行した場合に探索フィールドのコンテンツをクリアする。ホーム列310は、連絡先アプリケーション、電子メール・アプリケーション、ウェブブラウザ及びiPod(登録商標)ミュージックインタフェースにそれぞれ対応する従属ビュー310−1、310−2、310−3及び310−4を含む。
【0041】
タッチ・サブイベント301−1は、最も外側のビュー302において表現される。タッチ・サブイベント301−1の位置が探索結果パネル304及び地図ビュー305の両方の上にあると仮定すると、タッチ・サブイベントは、それぞれ301−2及び301−3としてもこれらのビュー上にさらに表現される。タッチ・サブイベントの能動的関与ビューは、ビュー探索結果パネル304、地図ビュー305及び最も外側のビュー302を含む。図3B及び図3Cを参照して、サブイベント配信及び能動的関与ビューに関する追加の情報を以下に提供する。
【0042】
ビュー(及び対応するプログラム・レベル)はネストされうる。言い換えると、ビューは他のビューを含みうる。従って、第1ビューに関連するソフトウェア要素(群)(例えば、イベント・レコグナイザ)は、第1ビュー内のビューに関連する1つ以上のソフトウェア要素を含むか又はそれにリンクされうる。アプリケーションに関連するビューもあれば、グラフィカルユーザインタフェース、ウィンドウマネージャ等の上位レベルのOS要素に関連するビューもある。
【0043】
図3Bは、一部の実施形態に係るイベント処理のための例示的なコンポーネント(例えば、イベント処理コンポーネント390)を示すブロック図である。一部の実施形態において、(図1A及び図1Bの)メモリ111は、(例えば、オペレーティングシステム118における)イベント・レコグナイザ・グローバルメソッド311と、個別のアプリケーション132−1とを含む。
【0044】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、イベント・モニタ312と、ヒット・ビュー判定モジュール313と、アクティブイベント・レコグナイザ判定モジュール314と、イベント・ディスパッチャ・モジュール315とを含む。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311はイベント配信システム130内に配置される。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311はオペレーティングシステム118において実装される。これに代えて、イベント・レコグナイザ・グローバルメソッド311はアプリケーション132−1において実装される。さらに他の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、スタンドアロン・モジュール又はメモリ111に格納された別のモジュール(例えば、接触/動作モジュール(不図示))の一部として実装される。
【0045】
イベント・モニタ312は、センサ130、タッチセンサ・ディスプレイ156及び/又は入力デバイス128からイベント情報を受信する。イベント情報は、イベント(例えば、マルチタッチ・ジェスチャ若しくはデバイス102又は104の動きの一部であるタッチセンサ・ディスプレイ156におけるユーザ・タッチ)及び/又はサブイベント(例えば、タッチセンサ・ディスプレイ156にわたるタッチの移動)に関する情報を含む。例えば、タッチ・イベントについてのイベント情報は、タッチの位置及びタイムスタンプのうちの1つ以上を含む。同様に、スワイプ・イベントについてのイベント情報は、スワイプの位置、タイムスタンプ、方向及び速度のうちの2つ以上を含む。センサ130、タッチセンサ・ディスプレイ156及び入力デバイス128は、イベント及びサブイベント情報をイベント・モニタ312に直接又は周辺インタフェースを介して送信し、イベント・モニタ312はイベント情報を読み出し、格納する。センサ130は、近接センサ、加速度計(群)、ジャイロスコープ、マイク及びビデオカメラのうちの1つ以上を含む。一部の実施形態において、センサ130は、入力デバイス128及び/又はタッチセンサ・ディスプレイ156も含む。
【0046】
一部の実施形態において、イベント・モニタ312は、所定の間隔で、センサ130及び/又は周辺インタフェースに要求を送信する。これに応答して、センサ130及び/又は周辺インタフェースはイベント情報を送信する。他の実施形態において、センサ130及び周辺インタフェースは、重大イベント(例えば、所定の雑音閾値を超え且つ/又は所定の期間よりも長い期間の入力の受信)があった場合にのみイベント情報を送信する。
【0047】
イベント・モニタ312は、イベント情報を受信し、イベント情報を配信する先のアプリケーション132−1及びアプリケーション132−1のアプリケーション・ビュー316−2を判定する。
【0048】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、ヒット・ビュー判定モジュール313及び/又はアクティブイベント・レコグナイザ判定モジュール314も含む。
【0049】
ヒット・ビュー判定モジュール313は、タッチセンサ・ディスプレイ156が2つ以上のビューを表示する場合にイベント又はサブイベントが行われた1つ以上のビュー内の位置を判定するためのソフトウェア・プロシージャを提供する。ビューは、ユーザがディスプレイ上で見られる制御及び他の要素から構成される。
【0050】
アプリケーション132−1に関連するユーザインタフェースの別の態様は、本明細書においてアプリケーション・ビュー又はユーザインタフェース・ウィンドウと呼ばれることもあるセット・ビュー316であり、このビューにおいて、情報が表示され、タッチ・ベースのジェスチャが発生する。タッチが検出される(各アプリケーションの)アプリケーション・ビューは、アプリケーションのビュー階層内の特定のビューに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれてもよく、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【0051】
ヒット・ビュー判定モジュール313は、イベント及び/又はサブイベントに関連する情報を受信する。アプリケーションが階層に編成された複数のビューを有する場合に、ヒット・ビュー判定モジュール313は、イベント又はサブイベントを処理すべき階層の最下位のビューとしてヒット・ビューを識別する。ほとんどの状況において、ヒット・ビューは、開始イベント又はサブイベント(すなわち、ジェスチャを形成するイベント及び/又はサブイベントのシーケンスの最初のイベント又はサブイベント)が発生する最下位レベルのビューである。ヒット・ビューがヒット・ビュー判定モジュールにより識別されると、ヒット・ビューは典型的に、ヒット・ビューとして識別された同一のタッチ又は入力ソースに関する全てのイベント及び/又はサブイベントを受信する。
【0052】
アクティブイベント・レコグナイザ判定モジュール314は、イベント及び/又はサブイベントの特定のシーケンスを受信すべきであるビュー階層内の1つ以上のビューを判定する。一部の適用状況において、アクティブイベント・レコグナイザ判定モジュール314は、ヒット・ビューのみがイベント及び/又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、アクティブイベント・レコグナイザ判定モジュール314は、イベント又はサブイベントの物理的な位置を含む全てのビューが能動的関与ビューであることを判定し、それ故、全ての能動的関与ビューがイベント及び/又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、タッチ・イベント及び/又はサブイベントが1つの特定のビューに関連する領域に全体的に制限されるとしても、階層の上位レベルのビューは、能動的関与ビューとして依然として存在する。
【0053】
イベント・ディスパッチャ・モジュール315は、イベント情報を(本明細書では「ジェスチャ・レコグナイザ」とも呼ばれる)イベント・レコグナイザ(例えば、イベント・レコグナイザ320−1)に振り分ける。アクティブイベント・レコグナイザ判定モジュール314を含む実施形態において、イベント・ディスパッチャ・モジュール315は、アクティブイベント・レコグナイザ判定モジュール314により判定されたイベント・レコグナイザにイベント情報を配信する。一部の実施形態において、イベント・ディスパッチャ・モジュール315はイベント情報をイベントキューに格納し、イベント情報は個別のイベント・レコグナイザ320(又は個別のイベント・レコグナイザ320のイベント受信部331)により読み出される。
【0054】
一部の実施形態において、アプリケーション132−1は、アプリケーションがアクティブであるか又は実行中の場合にタッチセンサ・ディスプレイ156に表示される現在のアプリケーション・ビュー(群)を示すアプリケーション内部状態317を含む。一部の実施形態において、デバイス/グローバル内部状態134は、現在アクティブであるアプリケーション(群)を判定するためにイベント・レコグナイザ・グローバルメソッド311により使用され、アプリケーション内部状態317は、イベント情報を配信する先のアプリケーション・ビュー316を判定するためにイベント・レコグナイザ・グローバルメソッド311により使用される。
【0055】
一部の実施形態において、アプリケーション内部状態317は、アプリケーション132−1が実行を再開する場合に使用される再開情報と、アプリケーション132−1により表示中の情報を示すか又は表示の準備が整っている情報を示すユーザインタフェース状態情報と、ユーザがアプリケーション132−1の前の状態又はビューに戻ることを可能にする状態キューと、ユーザにより行われた前の動作のリドゥ/アンドゥ・キューとのうちの1つ以上のような追加の情報(例えば、図3Cの344)を含む。一部の実施形態において、アプリケーション内部状態317は、コンテキスト情報/テキスト及びメタデータ318をさらに含む。
【0056】
一部の実施形態において、アプリケーション132−1は1つ以上のアプリケーション・ビュー316を含み、各アプリケーション・ビューは、アプリケーションのユーザインタフェースの個別のビュー内で発生するタッチ・イベントを処理するための命令を含む。アプリケーション132−1の少なくとも1つのアプリケーション・ビュー316は、1つ以上のイベント・レコグナイザ320と1つ以上のイベント・ハンドラ322とを含む。典型的に、個別のアプリケーション・ビュー316は、複数のイベント・レコグナイザ320と複数のイベント・ハンドラ322とを含む。他の実施形態において、イベント・レコグナイザ320のうちの1つ以上は、ユーザインタフェース・キット(不図示)又はアプリケーション132−1がメソッド及び他の属性を継承する上位レベルのオブジェクトのような、分離したモジュールの一部である。一部の実施形態において、個別のアプリケーション・ビュー316は、データ更新部、オブジェクト更新部、GUI更新部及び/又はイベント・データ受信部のうちの1つ以上も含む。
【0057】
個別のイベント・レコグナイザ320−1は、イベント・ディスパッチャ・モジュール315からイベント情報を受信し、イベント情報からイベントを識別する。イベント・レコグナイザ320−1は、イベント受信部331とイベント比較部332とを含む。
【0058】
イベント情報は、イベント(例えば、タッチ)又はサブイベント(例えば、タッチの移動)に関する情報を含む。イベント又はサブイベントに依存して、イベント情報は、イベント又はサブイベントの位置等の追加の情報も含む。イベント又はサブイベントがタッチの動きに関係する場合に、イベント情報は、サブイベントの速度及び方向も含んでもよい。一部の実施形態において、イベントは1つの方向から別の方向(例えば、縦長方向から横長方向又はその逆)へのデバイスの回転を含み、イベント情報は、デバイスの現在の(デバイスの姿勢とも呼ばれる)方向に関する対応する情報を含む。
【0059】
イベント比較部332は、イベント情報を(本明細書では「イベント定義」とも呼ばれる)1つ以上の所定のジェスチャ定義と比較し、その比較に基づいて、イベント又はサブイベントを判定するか、若しくはイベント又はサブイベントの状態を判定又は更新する。一部の実施形態において、イベント比較部332は、(上述したように、本明細書では「イベント定義」とも呼ばれる)1つ以上のジェスチャ定義333を含む。ジェスチャ定義333は、例えばジェスチャ1(334−1)及びジェスチャ2(334−2)等であるジェスチャ(例えば、イベント及び/又はサブイベントの所定のシーケンス)の定義を含む。一部の実施形態において、ジェスチャ定義333のサブイベントは、例えばタッチ開始、タッチ終了、タッチ移動、タッチ・キャンセル及び複数のタッチを含む。一例において、ジェスチャ1(334−1)の定義は、表示されたオブジェクトに対するダブルタップである。ダブルタップは、例えばジェスチャの所定のフェーズについての表示オブジェクトへの第1タッチ(タッチ開始)と、ジェスチャの次の所定のフェーズについての第1リフトオフ(タッチ終了)と、ジェスチャの後続する所定のフェーズについての表示オブジェクトへの第2タッチ(タッチ開始)と、ジェスチャの最後の所定のフェーズについての第2リフトオフ(タッチ終了)とを含む。別の例において、ジェスチャ2(334−2)の定義は、表示オブジェクトのドラッグである。例えばドラッグは、表示オブジェクトへのタッチ(又は接触)と、タッチセンサ・ディスプレイ156にわたるタッチの移動と、タッチのリフトオフ(タッチ終了)とを含む。
【0060】
一部の実施形態において、イベント・レコグナイザ320−1はイベント配信335のための情報も含む。イベント配信335のための情報は、対応するイベント・ハンドラ322に対する参照を含む。オプションとして、イベント配信335のための情報は、動作−対象ペア(群)を含む。一部の実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、イベント情報(例えば、動作メッセージ(群))は動作−対象ペア(群)により識別された1つ以上の対象に送信される。他の実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、動作−対象ペアが起動される。
【0061】
一部の実施形態において、ジェスチャ定義333は、個別のユーザインタフェース・オブジェクトに対するジェスチャの定義を含む。一部の実施形態において、イベント比較部332は、どのユーザインタフェース・オブジェクトがサブイベントに関連するかを判定するためにヒット・テストを実行する。例えば、3つのユーザインタフェース・オブジェクトがタッチセンサ・ディスプレイ156に表示されるアプリケーション・ビューにおいて、タッチセンサ・ディスプレイ156でタッチが検出された場合に、イベント比較部332は、もしあるならば、3つのユーザインタフェース・オブジェクトのうちのどれがタッチ(イベント)に関連するかを判定するためにヒット・テストを実行する。各表示オブジェクトが個別のイベント・ハンドラ322に関連するならば、イベント比較部332は、ヒット・テストの結果を使用して、そのイベント・ハンドラ322が起動されるべきかを判定する。例えばイベント比較部332は、ヒット・テストを始動するイベント及びオブジェクトに関連するイベント・ハンドラ322を選択する。
【0062】
一部の実施形態において、個別のジェスチャの定義333は、イベント及び/又はサブイベントのシーケンスがイベント・レコグナイザのイベントのタイプに対応するか否かが判定されるまでイベント情報の配信を遅延させる遅延動作も含む。
【0063】
一連のイベント及び/又はサブイベントがジェスチャ定義333のいずれのイベントとも合致しないことを個別のイベント・レコグナイザ320−1が判定する場合に、個別のイベント・レコグナイザ320−1はイベント失敗状態になり、その後、個別のイベント・レコグナイザ320−1はタッチ・ベースのジェスチャの後続のイベント及び/又はサブイベントを無視する。この状況において、ヒット・ビューに対してアクティブのままである他のイベント・レコグナイザがあるならば、これらのイベント・レコグナイザは実行中のタッチ・ベースのジェスチャのイベント及び/又はサブイベントを追跡及び処理し続ける。
【0064】
一部の実施形態において、個別のイベント・レコグナイザ320−1はイベント・レコグナイザ状態336を含む。イベント・レコグナイザ状態336は、個別のイベント・レコグナイザ320−1の状態を含む。イベント・レコグナイザ状態の例については、図4A〜図4Dを参照して以下にさらに詳細に説明する。
【0065】
一部の実施形態において、イベント・レコグナイザ状態336はレコグナイザ・メタデータ及び属性337−1を含む。一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、A)イベント配信システムが能動的関与イベント・レコグナイザへのイベント及び/又はサブイベント配信をどのように実行すべきかを示す設定可能な属性、フラグ及び/又はリスト、B)イベント・レコグナイザが互いにどのように相互作用するかを示す設定可能な属性、フラグ及び/又はリスト、C)イベント・レコグナイザがイベント情報をどのように受信するかを示す設定可能な属性、フラグ及び/又はリスト、D)イベント・レコグナイザがジェスチャをどのように認識してもよいかを示す設定可能な属性、フラグ及び/又はリスト、E)イベント及び/又はサブイベントがビュー階層の種々のレベルに配信されるかを示す設定可能な属性、フラグ及び/又はリスト、F)対応するイベント・ハンドラ322に対する参照のうちの1つ以上を含む。
【0066】
一部の実施形態において、イベント・レコグナイザ状態336はイベント/タッチ・メタデータ337−2を含む。イベント/タッチ・メタデータ337−2は、検出された個別のイベント/タッチに関するイベント/タッチ情報を含み、ジェスチャ定義333に対応する。イベント/タッチ情報は、個別のイベント/タッチの位置、タイムスタンプ、速度、方向、距離、倍率(又は倍率の変更)及び角度(又は角度の変更)のうちの1つ以上を含む。
【0067】
一部の実施形態において、個別のアプリケーション・ビューは1つ以上のデリゲート321を含む。個別のデリゲート321は、個別のイベント・レコグナイザ320に割り当てられる。これに代えて、個別のイベント・レコグナイザ320は対応するデリゲート321を有するが、デリゲート321は必ずしも実行時に個別のレコグナイザ320に割り当てられる必要はなく、イベント・レコグナイザに対するデリゲートはアプリケーションの実行前に確立されてもよい(例えば、イベント・レコグナイザに対するデリゲートは、アプリケーション・ビューのデリゲート属性により示され、対応するアプリケーション・ビュー316が初期化された場合に確立されてもよい)。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた(又は対応する)デリゲートを有しない。対応するデリゲートがないイベント・レコグナイザは、イベント認識の排他性を統治するデフォルト規則のようなデフォルト規則に従って実行する。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた(又は対応する)デリゲートを複数有する。デリゲートは、対応するイベント・レコグナイザの挙動を変更し、複数のイベント・レコグナイザの挙動を調整するためにも使用可能である。以下に説明する一部の実施形態において、デリゲートは、個別のイベント・レコグナイザに割り当てられた場合に、個別のイベント・レコグナイザの挙動の複数の側面を変更する。
【0068】
一部の実施形態において、個別のイベント・レコグナイザ320は、ジェスチャの1つ以上の特定のイベント及び/又はサブイベントが認識された場合に、個別のイベント・レコグナイザ320に関連するイベント・ハンドラ322を起動する。一部の実施形態において、個別のイベント・レコグナイザ320は、イベントに関連するイベント情報をイベント・ハンドラ322に配信する。
【0069】
イベント・ハンドラ322は、起動された場合に、データの作成及び/又は更新と、オブジェクトの作成及び更新と、表示情報の準備及びディスプレイ126又はタッチセンサ・ディスプレイ156に表示するためのその表示情報の送信とのうちの1つ以上を実行する。
【0070】
一部の実施形態において、個別のアプリケーション・ビュー316−2はビュー・メタデータ323を含む。ビュー・メタデータ323は、ビューに関するデータを含む。オプションとして、ビュー・メタデータは、イベント・レコグナイザに対するイベント及び/又はサブイベントの配信に影響を及ぼす以下の属性を含む。
●ビューに対して設定された場合に、ビューだけでなくビュー階層におけるその先祖に関連するイベント・レコグナイザへのイベント及び/又はサブイベント配信を防止する停止属性324−1。
●ビューに対して設定された場合に、そのビューに関連するイベント・レコグナイザへのイベント及び/又はサブイベント配信を防止するが、ビュー階層におけるそのビューの先祖へのイベント及び/又はサブイベント配信を許可するスキップ属性324−2。
●ビューに対して設定された場合に、ビューがヒット・ビューでない限り、ビューに関連するイベント・レコグナイザへのイベント及び/又はサブイベントの配信を防止するヒット以外スキップ属性324−3。上述したように、ヒット・ビュー判定モジュール313は、サブイベントを処理すべき階層における最下位ビューとしてヒット・ビューを識別する。
●他のビュー・メタデータ324−4。
【0071】
一部の実施形態において、ビュー階層内の第1能動的関与ビューは、その第1能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成されうる。この挙動は、スキップ属性324−2を実現できる。スキップ属性がアプリケーション・ビューに対して設定された場合に、個別のサブイベントの配信は、ビュー階層の他の能動的関与ビューに関連するイベント・レコグナイザに対して依然として実行される。
【0072】
これに代えて、ビュー階層内の第1能動的関与ビューは、第1能動的関与ビューがヒット・ビューでない限り、第1能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、条件付きのヒット以外スキップ属性324−3を実現できる。
【0073】
一部の実施形態において、ビュー階層内の第2能動的関与ビューは、第2能動的関与ビューに関連するイベント・レコグナイザ及び第2能動的関与ビューの先祖に関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、停止属性324−1を実現できる。
【0074】
タッチセンサ・ディスプレイにおけるユーザ・タッチのイベント処理に関する上記説明は、入力デバイスを有する電子デバイス102又は104を動作させるための他の形式のユーザ入力にも当てはまり、ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるジェスチャを定義するイベント及び/又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、タッチパッドにおけるユーザ移動、タップ、ドラッグ、クロール等、ペンスタイラス入力、デバイスの移動(例えば、回転)、音声命令、検出された眼球運動、バイオメトリック入力及び/又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【0075】
図3Cは、一部の実施形態に係るジェスチャ・レコグナイザ(例えば、イベント処理コンポーネント390)の例示的なクラス及びインスタンスを示すブロック図である。
【0076】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のイベント・レコグナイザ340を有する。一部の実施形態において、個別のイベント・レコグナイザ(例えば、340−2)はイベント・レコグナイザクラスである。個別のイベント・レコグナイザ(例えば、340−2)は、イベント・レコグナイザ固有コード341(例えば、イベント・レコグナイザの動作を定義する命令の集合)と、状態マシン342とを含む。
【0077】
一部の実施形態において、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)のアプリケーション状態317は、イベント・レコグナイザのインスタンスを含む。イベント・レコグナイザの各インスタンスは、状態(例えば、イベント・レコグナイザ状態336)を有するオブジェクトである。個別のイベント・レコグナイザ・インスタンスの「実行」は、対応するイベント・レコグナイザ固有コード(例えば、341)を実行し、イベント・レコグナイザ・インスタンス343の状態336を更新又は維持することにより実現される。イベント・レコグナイザ・インスタンス343の状態336は、イベント・レコグナイザ・インスタンスの状態マシン342の状態338を含む。
【0078】
一部の実施形態において、アプリケーション状態317は、各々がアプリケーションのビューと結び付けられた(「アタッチされた」とも言われる)イベント・レコグナイザに対応する複数のイベント・レコグナイザ・インスタンス343を含む。一部の実施形態において、アプリケーション状態317は個別のイベント・レコグナイザ(例えば、340−2)の複数のインスタンス(例えば、343−1〜343−L)を含む。一部の実施形態において、アプリケーション状態317は、複数のイベント・レコグナイザ(例えば、340−1〜340−R)のインスタンス343を含む。
【0079】
一部の実施形態において、ジェスチャ・レコグナイザの個別のインスタンス343−2はイベント・レコグナイザ状態336を含む。上述したように、イベント・レコグナイザ状態336は、レコグナイザ・メタデータ及び属性337−1とイベント/タッチ・メタデータ337−2とを含む。イベント・レコグナイザ状態336は、ジェスチャ・レコグナイザの個別のインスタンス343−2がアタッチされるビューを示すビュー階層参照(群)337−3も含む。
【0080】
一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、以下を含むか、又は以下の部分集合又は上位集合を含む。
●イベント・レコグナイザに対して設定された場合に、イベント・レコグナイザがジェスチャを認識した時にイベント配信システムが(例外リスト353に列挙された他の任意のイベント・レコグナイザを除く)能動的関与ビューの他の任意のイベント・レコグナイザへのイベント及び/又はサブイベントの配信を停止すべきであることを示す排他性フラグ339。対応する排他性フラグ339により示されるように、イベント又はサブイベントを受信することにより特定のイベント・レコグナイザが排他的状態になる場合に、後続のイベント及び/又はサブイベントは、排他的状態のイベント・レコグナイザ(だけでなく、例外リスト353に列挙された他の任意のイベント・レコグナイザ)にのみ配信される。
●排他性例外リスト353。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態336に含まれる場合に、このリスト353は、個別のイベント・レコグナイザが排他的状態に入った後でもイベント及び/又はサブイベントを受信し続けるイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。例えば、シングルタップ・イベントに対するイベント・レコグナイザが排他的状態になり、現在の関与ビューがダブルタップ・イベントに対するイベント・レコグナイザを含む場合に、リスト353は、シングルタップ・イベントが検出された後でもダブルタップ・イベントが認識されるようにダブルタップ・イベント・レコグナイザを列挙する。従って、排他性例外リスト353は、イベント・レコグナイザがイベント及び/又はサブイベントの共通のシーケンスを共有する相異なるジェスチャを認識することを許可する。例えば、シングルタップ・ジェスチャ認識は、他のイベント・レコグナイザによるダブル又はトリプル・タップジェスチャの後続の認識を排除しない。
●待ちリスト351。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態336に含まれる場合に、このリスト351は、個別のイベント・レコグナイザが個別のイベントを認識できる前にイベント失敗状態又はイベント・キャンセル済状態にならなければならないイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。実質的に、列挙されたイベント・レコグナイザは、イベントを認識する優先順位が待ちリスト351を有するイベント・レコグナイザより高い。
●イベント・レコグナイザに対して設定された場合に、イベント及び/又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されるまで、イベント・レコグナイザが(タッチ開始サブイベント又はフィンガーダウン・サブイベント及び後続のイベントを含む)イベント及び/又はサブイベントをイベント・レコグナイザの個別のヒット・ビューに送信するのを遅延させる遅延タッチ開始済フラグ352。このフラグは、ジェスチャが認識される場合にヒット・ビューがイベント及び/又はサブイベントの何れかを参照するのを防止するために使用されうる。イベント・レコグナイザがジェスチャを認識できない場合に、タッチ開始済サブイベント(及び後続のタッチ終了サブイベント)はヒット・ビューに配信されうる。一例において、そのようなサブイベントをヒット・ビューに配信することにより、ユーザインタフェースは、オブジェクトに関連する動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
●イベント・レコグナイザに対して設定された場合に、サブイベントのシーケンスがこのイベント・レコグナイザのイベントのタイプに対応しないと判定されるまで、イベント・レコグナイザがサブイベント(例えば、タッチ終了サブイベント)をイベント・レコグナイザの個別のヒット・ビュー又はレベルに送信するのを遅延させる遅延タッチ終了フラグ363。これは、ジェスチャが後で認識される場合にヒット・ビューがタッチ終了サブイベントに作用するのを防止するために使用されうる。タッチ終了サブイベントが送信されない限り、キャンセルされたタッチはヒット・ビュー又はレベルに送信されうる。イベントが認識されるならば、アプリケーションによる対応する動作が実行され、タッチ終了サブイベントはヒット・ビュー又はレベルに配信される。
●イベント・レコグナイザに対して設定された場合に、イベント及び/又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されている場合、イベント・レコグナイザにタッチ又は入力のキャンセルをイベント・レコグナイザの個別のヒット・ビューに送信させるタッチ・キャンセル・フラグ364。ヒット・ビューに送信されたタッチ又は入力のキャンセルは、先のイベント及び/又はサブイベント(例えば、タッチ開始済サブイベント)がキャンセルされたことを示す。タッチ又は入力のキャンセルにより、イベント・レコグナイザの状態は(図4Bの)イベント・キャンセル済状態418に入る。
【0081】
一部の実施形態において、1つ以上のイベント・レコグナイザは、イベント・レコグナイザがイベントを認識する後までサブイベントのシーケンスのうち1つ以上のサブイベントを配信することを遅延するように適合されうる。この挙動は遅延イベントを反映する。例えば、複数のタップ・ジェスチャが可能であるビューのシングルタップ・ジェスチャを検討する。この場合に、タップ・イベントは「タップ+遅延」レコグナイザになる。実質的に、イベント・レコグナイザがこの挙動を実現する場合に、イベント・レコグナイザは、サブイベントのシーケンスが実際にそのイベント定義に対応することが確実になるまでイベント認識を遅延させる。この挙動は、キャンセルされたイベントに受信者ビューが適切に応答できない場合に適切でありうる。一部の実施形態において、イベント・レコグナイザは、サブイベントのシーケンスがそのイベント定義に対応しないことをイベント・レコグナイザが確信するまでイベント認識状態を個別の能動的関与ビューに更新することを遅延させる。遅延タッチ開始済フラグ352、遅延タッチ終了フラグ363及びタッチ・キャンセル・フラグ364は、サブイベント配信技術だけでなく、イベント・レコグナイザ及びビュー状態情報更新を特定の要望に合わせて調整するために提供される。
【0082】
一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、以下を含むか、若しくは以下の部分集合又は上位集合を含む。
●個別のイベント・レコグナイザ・インスタンス(例えば、343−2)に対する状態マシン(例えば、342)の状態を示す状態マシンの状態/フェーズ338。状態マシンの状態/フェーズ338は、以下に説明するように「イベント可能」、「イベント認識済」及び「イベント失敗」等の種々の状態値を有しうる。これに代えて又はこれに加えて、状態マシンの状態/フェーズ338は、タッチ・データ構造が以前のタッチ・データ構造により参照されていない新しいタッチを定義することを示す「タッチ・フェーズ開始済」等の種々のフェーズ値を有しうる。「タッチ・フェーズ移動済」値は、定義されているタッチが以前の位置から移動したことを示す。「タッチ・フェーズ静止」値は、タッチが同一の位置に留まっていることを示しうる。「タッチ・フェーズ終了済」値は、タッチが終了したこと(例えば、ユーザがマルチタッチ・ディスプレイの面から自身の指を離したこと)を示しうる。「タッチ・フェーズ・キャンセル済」値は、タッチがデバイスによりキャンセルされたことを示す。キャンセルされたタッチは、必ずしもユーザにより終了されたわけではないタッチであるが、デバイスはそれを無視することを判定したものである。例えばデバイスは、タッチが意図せずに生成されている(すなわち、ポータブル・マルチタッチ対応デバイスをポケットに入れた結果)と判定し、そのためタッチを無視できる。状態マシンの状態/フェーズ338の各値は本明細書では(「ジェスチャ・レコグナイザ状態値」と呼ばれる)整数であってもよい。
●ジェスチャ又はジェスチャの一部としてイベント又はタッチを認識することに応答して個別のイベント・レコグナイザ・インスタンスが識別された動作メッセージを送信する先の対象を各ペアが識別する動作−対象ペア(群)345。
●デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられた場合の対応するデリゲートに対する参照であるデリゲート346。デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられない場合に、デリゲート346はヌル値を含む。
●個別のイベント・レコグナイザ・インスタンスが有効にされるかを示す有効属性347。一部の実施形態において、個別のイベント・レコグナイザ・インスタンスが有効でない(例えば、無効である)場合に、個別のイベント・レコグナイザ・インスタンスはイベント又はタッチを処理しない。
【0083】
一部の実施形態において、例外リスト353はまた、非排他的なイベント・レコグナイザにより使用されうる。特に非排他的イベント・レコグナイザがイベント又はサブイベントを認識した場合に、後続のイベント及び/又はサブイベントは、イベント又はサブイベントを認識したイベント・レコグナイザの例外リスト353に列挙された排他的イベント・レコグナイザを除く現在アクティブなビューに関連する排他的イベント・レコグナイザに配信されない。
【0084】
一部の実施形態において、イベント・レコグナイザは、不要なイベント及び/又はサブイベントがヒット・ビューに配信されるのを防止するために遅延タッチ終了フラグ363と共にタッチ・キャンセル・フラグ364を利用するように構成されうる。例えば、シングルタップ・ジェスチャの定義とダブルタップ・ジェスチャの前半とは同一である。シングルタップ・イベント・レコグナイザがシングルタップを正常に認識すると、不要な動作が行われうる。遅延タッチ終了フラグが設定されたならば、シングルタップ・イベントが認識されるまで、シングルタップ・イベント・レコグナイザはサブイベントをヒット・ビューに送信しないようにされる。また、シングルタップ・イベント・レコグナイザの待ちリストがダブルタップ・イベント・レコグナイザを識別してもよく、これによって、ダブルタップ・イベント・レコグナイザがイベント不可能状態になるまで、シングルタップ・イベント・レコグナイザがシングルタップを認識しないようにする。待ちリストを使用することにより、ダブルタップ・ジェスチャが実行される場合にシングルタップに関連する動作の実行を回避する。その代わり、ダブルタップ・イベントの認識に応答して、ダブルタップに関連する動作のみが実行される。
【0085】
タッチセンサ面におけるユーザ・タッチの形式を特に参照すると、上述したように、タッチ及びユーザ・ジェスチャは瞬時である必要がない動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含みうる。しかし、タッチ・データ構造は、特定の時刻のタッチの状態(すなわち、より一般的には任意の入力ソースの状態)を定義する。従って、タッチ・データ構造に格納された値はシングルタッチの間に変更されてもよく、それにより異なる時点のシングルタッチの状態がアプリケーションに伝達される。
【0086】
各タッチ・データ構造は種々のエントリを含みうる。一部の実施形態において、タッチ・データ構造は、以下のような、若しくは以下の部分集合又は上位集合のようなイベント/タッチ・メタデータ337−2のタッチ固有エントリに少なくとも対応するデータを含みうる。
●(ビューがインスタンス化されたため)タッチ・データ構造が特定のビューに対する第1タッチを定義するかを示す「ビューに対する第1タッチ」エントリ348。
●タッチ・データ構造が関連する特定の時刻(例えば、タッチの時刻)を示す「タイムスタンプ」情報を含む「タッチ毎の情報」エントリ349。オプションとして、「タッチ毎の情報」エントリ349は、対応するタッチの位置等の他の情報を含む。
●最初のタッチの位置で連続して実行されたタップ数を示すオプションの「タップ・カウント」エントリ350。タップは、特定の位置でのタッチセンシティブパネルへの迅速な指の押下及び持ち上げとして定義されうる。指がパネルの同一の位置で迅速に連続して再度押下及び解放されるならば、複数の連続したタップが発生しうる。イベント配信システム130は、タップをカウントし、「タップ・カウント」エントリ350を介してこの情報をアプリケーションに中継できる。同一の位置における複数のタップは、タッチ対応インタフェースに対する有用で覚えやすいコマンドとみなされることがある。従って、タップをカウントすることにより、イベント配信システム130は、アプリケーションからの何らかのデータ処理を再度軽減できる。
【0087】
従って、各タッチ・データ構造は、特定の時刻に個別のタッチ(又は他の入力ソース)により発生していること(例えば、タッチが静止しているか、移動しているか等)だけでなく、タッチに関連する他の情報(位置等)を定義できる。従って、各タッチ・データ構造は、特定の瞬間の特定のタッチの状態を定義できる。同一の時刻を参照する1つ以上のタッチ・データ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義できるタッチ・イベント・データ構造に追加されうる(上述したように、いくつかのタッチ・データ構造は、終了して、もはや受信されていないタッチも参照してもよい)。複数のタッチ・イベント・データ構造は、ビューで発生しているタッチを記述する連続した情報をソフトウェアに提供するために、時間の経過と共にビューを実現するソフトウェアに送信されうる。
【0088】
オプションとしてマルチタッチ・ジェスチャを含む複雑なタッチ・ベースのジェスチャを処理する機能は、種々のソフトウェア・アプリケーションをさらに複雑にしうる。いくつかの例において、このような追加の複雑さは、高度な所望のインタフェース機能を実現するのに必要でありうる。例えばゲームは、同時に複数のボタンを押下したり、若しくは加速度計データをタッチセンサ面におけるタッチと組み合わせたりすることを必要とすることが多いので、種々のビューで発生する複数の同時のタッチを処理する機能を必要としうる。しかし、いくつかのより単純なアプリケーション及び/又はビューは、高度なインタフェース機能を要求する必要がない。例えば単純なソフトボタン(すなわち、タッチセンサ・ディスプレイに表示されるボタン)は、マルチタッチ機能ではなくシングルタッチで十分に動作しうる。これらの例において、基礎となるOSは、シングルタッチ(例えば、ソフトボタンへのシングルタッチ又はシングルタップ)のみで動作可能であることが意図されるビューに関連するソフトウェア・コンポーネントに不必要な又は過剰なタッチ・データ(例えば、マルチタッチ・データ)を送信しうる。ソフトウェア・コンポーネントは、このデータを処理する必要がありうるので、シングルタッチのみが関連するビューに関連するとしても、複数のタッチを処理するソフトウェア・アプリケーションの全ての複雑さを特徴とする必要がありうる。従来、マウスインタフェース環境(すなわち、種々のボタン等)でプログラムするのが容易であったソフトウェア・コンポーネントがマルチタッチ環境でかなり複雑になりうるので、これによりデバイスに対してソフトウェアを開発するコストが増加しうる。
【0089】
複雑なタッチ・ベースのジェスチャを認識する際の複雑さを軽減するために、デリゲートは、一部の実施形態に従ってイベント・レコグナイザの挙動を制御するために使用されうる。以下に説明するように、デリゲートは、例えば対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)がイベント(例えば、タッチ)情報を受信できるか、対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)が状態マシンの初期状態(例えば、イベント可能状態)から別の状態に遷移できるか、及び/又は他のイベント・レコグナイザ(群)(又はジェスチャ・レコグナイザ(群))がイベントを認識することを阻止せずに又はイベントを認識する他のイベント・レコグナイザ(群)(又はジェスチャ・レコグナイザ(群))により阻止されずに、対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)がイベント(例えば、タッチ)を対応するジェスチャとして同時に認識できるかを判定できる。
【0090】
しかし、タッチセンサ面に対するユーザ・タッチの評価及び処理の複雑さに関する上記説明は、電子デバイス102又は104を動作させるための全ての形式のユーザ入力にも当てはまる。ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるイベントを定義するイベント及び/又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、デバイスの回転又は他の移動、タップ、ドラッグ、スクロール等のユーザの移動、ペンスタイラスの入力、音声命令、検出された眼球運動、バイオメトリック入力、検出されたユーザの生理学的変化及び/又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【0091】
図4A〜図4Dは、一部の実施形態に係る例示的な状態マシンのためのフローチャートである。ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザと連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは典型的に、所定の期間内に発生する簡単なジェスチャ(例えば、タップ又はスワイプ・ジェスチャ)を認識する際に有用であり、より本質的には、ジェスチャ認識の際に1つの動作メッセージのみ又は動作メッセージの1つの集合のみがアプリケーションに配信される必要があるジェスチャを認識するためのものである。連続ジェスチャ・レコグナイザは、タッチの移動を含む(及び従ってタッチ位置の追跡を必要とする)ジェスチャ(例えば、パン、ピンチ又は回転ジェスチャ)を認識する際に有用であり、より本質的には、動作メッセージのシーケンスがジェスチャの間にアプリケーションに配信される必要があるジェスチャを認識するためのものである。一部の実施形態において、離散イベント・レコグナイザ状態マシン400及び連続イベント・レコグナイザ状態マシン402は異なる状態を有する。
【0092】
図4Aは、一部の実施形態に係る3つの状態を含む離散イベント・レコグナイザ状態マシン400を示す。受信したイベント及び/又はサブイベントに基づいてイベント・レコグナイザ状態マシン342の状態遷移を管理することにより、イベント・レコグナイザはイベント定義を効果的に表現する。例えば、タップ・ジェスチャは、2つのサブイベント又は場合によっては3つのサブイベントのシーケンスにより効果的に定義されうる。第1に、タッチが検出されるべきであり、これはサブイベント1となる。例えば、タッチ・サブイベントは、イベント・レコグナイザ状態マシン342を有するイベント・レコグナイザを含むビューにおいてユーザの指がタッチセンサ面にタッチしていることでありうる。第2に、タッチがどの所与の方向にも実質的に移動せず(例えば、タッチ位置の任意の移動が所定の閾値よりも小さく、これは例えばディスプレイにおいて距離(例えば、5mm)又は画素数(例えば、5画素)として測定されうる)、遅延が十分に短いオプションの測定済遅延はサブイベント2である。最後に、タッチ終了(例えば、タッチセンサ面からユーザの指を離すこと)はサブイベント3である。これらのサブイベントを受信することに基づいて状態間を遷移するようにイベント・レコグナイザ状態マシン342をコーディングすることにより、イベント・レコグナイザ状態マシン342は、タップ・ジェスチャイベント定義を効果的に表現する。離散イベント・レコグナイザ状態マシン400は、上述したタップ・ジェスチャを認識するように構成されたイベント・レコグナイザ状態マシン342の例示的な実現例である。
【0093】
イベントのタイプに関係なく、(離散イベント・レコグナイザ状態マシン400として実現されたイベント・レコグナイザ状態マシンを含む)イベント・レコグナイザ状態マシン342は、イベント可能状態410で始まり、これはイベント・レコグナイザ状態マシンの初期状態を示す。イベント・レコグナイザ状態マシン342は、受信されるイベント及び/又はサブイベントに依存して残りのいずれかの状態に進みうる。
【0094】
イベント可能状態410から始まって、ジェスチャ定義の第1イベント又はサブイベントでないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント失敗状態430に遷移する。
【0095】
イベント可能状態410から始まって、自身がジェスチャに対するジェスチャ定義を含むイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント認識済状態420に遷移する。しかし、受信したイベント又はサブイベントがジェスチャに対するジェスチャ定義を含むとしても、離散イベント・レコグナイザ状態マシン400は対応するイベント・レコグナイザのメタデータ(例えば、属性)、対応するデリゲートにより判定された1つ以上の値及び/又はアプリケーション状態に従ってイベント失敗状態430に遷移しうる。
【0096】
一部の実施形態において、イベント認識済状態420に遷移した後、対応するイベント・レコグナイザは、遅延フラグ(例えば、遅延タッチ終了フラグ363)をチェックする(441)。遅延フラグがオンであるならば(441においてYES)、対応するイベント・レコグナイザは、遅延フラグがオフにされるまでイベント情報の配信を遅延させる(442)。
【0097】
一部の実施形態において、対応するイベント・レコグナイザは待ちリスト351を含み、対応するイベント・レコグナイザは所定の状態に到達するために待ちリスト351に列挙されたイベント・レコグナイザを待つ。例えば、ビューがシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを含む場合に、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザが失敗するのを待つように構成されうる。実際には、シングルタップ・ジェスチャ・レコグナイザがイベント認識済状態420に遷移するには、ダブルタップ・ジェスチャ・レコグナイザがイベントを認識することに失敗したことが必要である(又はそれを条件としている)。その結果、タップ・イベントがある場合に、タップ・イベントがマルチタップ・ジェスチャの一部でない限り、シングルタップ・ジェスチャ・レコグナイザはタップ・イベントを認識する。
【0098】
遅延及び待ち(442)の後、存在するならば、対応するジェスチャ・レコグナイザはイベントをアプリケーションに配信する(443)。一部の実施形態において、イベントは動作メッセージの形式で配信される。一部の実施形態において、動作メッセージは動作−対象ペア(群)345に従って配信される。一部の実施形態において、対応するジェスチャ・レコグナイザは動作−対象ペア(群)345を起動する。
【0099】
図4Bは、一部の実施形態に係る6つの状態を含む連続イベント・レコグナイザ状態マシン402を示す。
【0100】
上述したように、連続イベント・レコグナイザ状態マシン402は、イベント可能状態410から始まる。
【0101】
イベント可能状態410から始まって、ジェスチャ定義のイベント及び/又はサブイベントの開始シーケンスの一部でないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント失敗状態430に遷移する。
【0102】
イベント可能状態410から始まって、所与のジェスチャ定義のイベント(群)及び/又はサブイベント(群)の開始シーケンスの一部であるイベント又はサブイベントが受信されたならば、連続イベント・レコグナイザ状態マシン402はイベント開始済状態412に遷移する。離散ジェスチャ・レコグナイザ400と同様に、受信したイベント又はサブイベントがジェスチャ定義のイベント(群)及び/又はサブイベント(群)の開始シーケンスの一部を含むとしても、連続イベント・レコグナイザ状態マシン402は、対応するイベント・レコグナイザのメタデータ(例えば、属性)、対応するデリゲートにより判定された1つ以上の値及び/又はアプリケーション状態に従ってイベント失敗状態430に遷移しうる。
【0103】
イベント開始済状態412から、受信された次のイベント又はサブイベントが中間イベント又はサブイベントであるが所与のジェスチャ定義の最後のイベント又はサブイベントでないならば、連続イベント・レコグナイザ状態マシン402はイベント変更済状態414に遷移して留まる。連続イベント・レコグナイザ状態マシン402は、受信したイベント及び/又はサブイベントのシーケンスがジェスチャ定義の一部であり続ける限り、イベント変更済状態414に留まりうる。連続イベント・レコグナイザ状態マシン402は、いずれかの時点でイベント変更済状態414であり、ジェスチャ定義の一部でないイベント又はサブイベントを受信したならば、イベント失敗状態430に遷移し、それにより、(存在する場合に)現在のイベントはこのイベント・レコグナイザ(すなわち、連続イベント・レコグナイザ状態マシン402に対応するイベント・レコグナイザ)に対応するイベントのタイプでないことを判定する。一方、連続イベント・レコグナイザ状態マシン402は、イベント開始済状態412又はイベント変更済状態414であり、ジェスチャ定義の最後のイベント又はサブイベントを受信したならば、イベント終了済状態416に遷移し、それによって、正常なイベント認識を完了する。
【0104】
一部の実施形態において、各ジェスチャ・レコグナイザ状態はジェスチャ・レコグナイザ状態値を有する。一部の実施形態において、(離散イベント・レコグナイザ状態マシン400に対する)イベント認識済状態420及び(連続イベント・レコグナイザ状態マシン402に対する)イベント終了済状態416は、1つのタイプのジェスチャ・レコグナイザによるジェスチャの認識に応答するように構成されたソフトウェア・コンポーネントが他のタイプのジェスチャ・レコグナイザにも応答できるように、同一のジェスチャ・レコグナイザ状態値を有する。
【0105】
イベント開始済状態412又はイベント変更済状態414の間、(例えば、着呼等のオペレーティングシステム118又は制御アプリケーション124において事前に定義された)所定の割り込みイベントが発生した場合に、連続イベント・レコグナイザ状態マシン402はイベント・キャンセル済状態418に遷移する。
【0106】
ジェスチャ・レコグナイザのタイプに関わらず、各ジェスチャ・レコグナイザ(例えば、343)は、対応するイベント・レコグナイザ状態マシン(例えば、342)がイベント可能状態410に戻るように再設定されうる。
【0107】
図4C及び図4Dは、一部の実施形態に係る状態遷移におけるデリゲートの役割を示す。図4C及び図4Dにおいて、1つ以上のデリゲートによる動作(又は行われる決定)は、陰影付きのボックスにより示される(例えば、450〜456)。
【0108】
図4Cは、一部の実施形態に係る離散イベント・レコグナイザ状態マシン400の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン400は、対応するデリゲートを有する特定の離散イベント・レコグナイザに対応する。
【0109】
イベント可能状態410から始まって、イベント又はサブイベントが検出されたならば、イベント・レコグナイザに対応するデリゲートは、イベント・レコグナイザがイベント又はサブイベントを受信すべきか(450)を決定する。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止する値をデリゲートが返したならば、対応するイベント・レコグナイザは、イベント又はサブイベントを受信しない(か、イベント又はサブイベントを無視する)。その結果、対応するイベント・レコグナイザはイベント可能状態410に留まる。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止するデリゲートが存在しないならば、対応するイベント・レコグナイザのデフォルトの挙動は、イベント又はサブイベントを受信することである。
【0110】
なお、イベント・レコグナイザの集合のデリゲートによる「受信すべきか」の動作450は、どのイベント・レコグナイザがタッチセンサ・ディスプレイ又はタッチセンサ面に対するどのタッチを受信するかを判定するために使用されうる。例えば、個別に且つ同時に2つのオブジェクトの位置を変更するため又は2つの異なるオブジェクトを選択するためにユーザが2つのタッチを使用できるようにするビューにおいて、2つのイベント・レコグナイザのデリゲートは、1つのイベント・レコグナイザが2つのタッチのうちの第1タッチのみを受信することを許可し、第2イベント・レコグナイザが2つのタッチのうちの第2タッチのみを受信することを許可するように構成されうる。従って、2つのタッチの各々に関する全ての情報は、対応するデリゲートによりそのタッチを受信することを許可されたイベント・レコグナイザにのみへ宛てられる。かなり複雑なマルチタッチ入力は、どのタッチがどのイベント・レコグナイザにより処理されるかを判定する複数のイベント・レコグナイザ及び対応するデリゲートを使用することにより認識及び処理されうる。
【0111】
イベント・レコグナイザがイベント又はサブイベントを受信することを許可されたならば、イベント・レコグナイザに対応するデリゲート(又は制御アプリケーション124又はオペレーティングシステム118)は、イベント・レコグナイザによるイベント又はサブイベントの認識が、イベントを既に認識している別のイベント・レコグナイザにより阻止される(451)。この阻止の初期レベルは、デフォルトの排他性規則に基づき、デリゲートにより上書きされうる。イベント又はサブイベントの認識が阻止されたならば、対応するデリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、イベント・レコグナイザによるイベントの同時認識がデリゲートにより判定された1つ以上の値に従って許可されるか(452)も決定する。例えば、イベント・レコグナイザがイベントを最初に認識したイベント・レコグナイザの排他性例外リスト353にあるならば、デリゲートは、両方のイベント・レコグナイザによる同時認識を許可する。別の例において、イベント・レコグナイザの排他性フラグ339が設定されないならば、デリゲートは両方のイベント・レコグナイザによる同時認識を許可する。同時認識が許可されないならば、イベント・レコグナイザはイベント失敗状態430に遷移する。
【0112】
対応するイベント・レコグナイザがイベント又はサブイベントを認識することを阻止されないならば(451においてNO)、若しくは同時認識が許可されるならば(452においてYES)、対応するイベント・レコグナイザは、イベント又はサブイベントが、対応するジェスチャ定義に合致するか(453)を判定する。イベント又はサブイベントが対応するジェスチャ定義に合致しないならば(453においてNO)、対応するジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0113】
イベント又はサブイベントが対応するジェスチャ定義に合致するならば(453においてYES)、対応するデリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、デリゲートにより判定された1つ以上の値に従ってイベント可能状態410から遷移できるか(「開始すべきか」454)を決定する。イベント・レコグナイザがイベント可能状態410から遷移することをデリゲートにより許可されないならば(454においてNO)、対応するイベント・レコグナイザはイベント失敗状態430になる。イベント・レコグナイザがイベント可能状態410から遷移することを許可されるならば(454においてYES)、対応するイベント・レコグナイザはイベント認識済状態420に遷移する。
【0114】
対応するイベント・レコグナイザがイベント認識済状態420に遷移する場合に、対応するイベント・レコグナイザ(又はオペレーティングシステム118又は制御アプリケーション124)は、他のイベント・レコグナイザによるイベント又はサブイベントの認識を許可するか(455)も決定する。一部の実施形態において、イベント・レコグナイザのうちの少なくとも1つのイベント・レコグナイザのデリゲート(又はアプリケーション)が同時認識を許可するように属性を設定しない限り、デフォルトは他の全てのイベント・レコグナイザが同一のイベントを認識することを防止することである。イベント又はサブイベントを認識したイベント・レコグナイザに対応するデリゲートが、他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可すること(455においてYES)を判定したならば、デリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、イベント又はサブイベントを同時に認識できるように他のイベント・レコグナイザの属性を設定する(456)。他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可しないならば、他のイベント・レコグナイザは、イベント又はサブイベントを認識することを防止される。
【0115】
一部の実施形態において、個別のイベント・レコグナイザがイベント又はサブイベントを認識しないようにする前に、そのイベント・レコグナイザのデリゲートは、イベント又はサブイベントの同時認識を許可するかを確認するために呼び出される(452を参照)。これらの実施形態において、同時認識は、イベントを認識する第1イベント・レコグナイザのデリゲート又は第2イベント・レコグナイザのデリゲートの何れかにより可能になりうる。図4Cの452及び455により示されるように、これらの実施形態において、同時認識を許可するかに関する決定は、イベントが少なくとも1つのイベント・レコグナイザのイベント定義に合致する場合にのみ行われる。
【0116】
上述したデリゲート動作は、アプリケーション・ビュー(又は同時に表示されたビューの集合)により使用されたイベント・レコグナイザの集合に対するデリゲートにおいて実装される場合に、イベント・レコグナイザの相互作用をカスタマイズするために使用されうる。デリゲートは、デフォルトの排他性規則に対する例外を実装でき、その例外以外では、1つのイベント・レコグナイザのみが受信された同一のイベント(群)に基づいてジェスチャを認識することを許可する。デフォルトの排他性規則に対する例外を実装し、それにより互換性のあるイベント・レコグナイザによる同時イベント認識を許可するデリゲートのユーザは、ソフトウェア・アプリケーションにおける多くの有用な機能の実装を容易にする。イベント・レコグナイザの挙動を変更及び制御するためにデリゲートを使用することにより、相互に互換性のあるジェスチャの相互に排他的な集合等の複雑な関係のコンパクト表現及び実装が可能になる。
【0117】
図4Dは、一部の実施形態に係る連続イベント・レコグナイザ状態マシン402の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン402は、対応するデリゲートを有する特定の連続イベント・レコグナイザに対応する。図4Cに示され、図4Cを参照して上述された全てのデリゲートの動作は、対応するデリゲートを有する連続イベント・レコグナイザに等しく適用可能であり、それ故、図4Dに示すデリゲートの動作は図4Cと同一の参照符号を有する。唯一の相違点は、状態マシンにおける1つの状態の名前が状態マシン400の「イベント認識済」420から状態マシン402の「イベント開始済」412に変更されたことである。
【0118】
対応するイベント・レコグナイザは、上述したようにイベント開始済状態412から他の状態に遷移する。簡潔にするために、イベント変更済状態414からイベント失敗状態416への遷移は示さない。
【0119】
以下の表は、上述したイベント・レコグナイザの状態に関する例示的なサブイベント・シーケンス(例えば、シングルタップ)の処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に受信し認識するように構成される。同時認識は、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲート又は第2タップ・ジェスチャ・レコグナイザに割り当てられたデリゲートにより許可されうる。
【0120】
サブイベント情報の配信が始まる前(シーケンス番号0)、両方のジェスチャ・レコグナイザはイベント可能状態410である。フィンガーダウン・サブイベントを検出し(シーケンス番号1)、遅延を測定した(シーケンス番号2)後であっても、両方のジェスチャ・レコグナイザはイベント可能状態410に留まる。フィンガーリフトオフを検出したこと(シーケンス番号3)に応答して、シングルタップ・ジェスチャ・レコグナイザはイベント認識済状態420に遷移する。追加の遅延を検出した後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント認識済状態420に留まり、リセットされた場合に、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態410に戻る。一方、測定された追加の遅延が所定の期間(例えば、ダブルタップ・ジェスチャ・レコグナイザは第2フィンガーダウン・サブイベントを予想する期間)を超える場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0121】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されない。
【0122】
シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されないため、イベント可能状態410に留まる。測定された第2遅延が所定の閾値を超えた場合(シーケンス番号4)に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0123】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可されない。
【0124】
上述したのと同様に、フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移する。一般に、サブイベント・シーケンスを認識する第1ジェスチャ・レコグナイザは、サブイベント・シーケンスをまだ認識していない他のジェスチャ・レコグナイザがサブイベント・シーケンスを認識するのを阻止する。同時認識が許可されない限り、阻止されたジェスチャ・レコグナイザはイベント失敗状態430に遷移する。この場合、同時認識が許可されないので、シングルタップ・ジェスチャ・レコグナイザが(シーケンス番号3において)サブイベント・シーケンスを認識した場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移し、リセットされるまでその状態に留まる。
【0125】
以下の表は、1つのジェスチャ・レコグナイザの挙動がデリゲートにより変更され、2つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、開始すること(すなわち、イベント可能状態410から遷移すること)を許可されない。
【0126】
フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移しようとする。しかし、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲートはイベント認識済状態420への状態遷移を許可せず、その結果、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。測定された遅延が所定の閾値を超えた場合(シーケンス番号4)に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0127】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更され、2つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザの失敗を待つ(又は必要とする)。
【0128】
フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移しようとする。しかし、「待ち」要件又は(ダブルタップ・ジェスチャ・レコグナイザが失敗するという)失敗要件に起因して、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態420への遷移を遅延させる。測定された第2遅延が所定の閾値を超える(シーケンス番号4)ことからダブルタップ・ジェスチャ・レコグナイザが失敗した場合に、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態420に遷移する。「待ち」要件及び/又は失敗要件は、デリゲートを使用して実装されてもよく、ジェスチャ・レコグナイザにおいて実装されてもよい。
【0129】
以下の表は、例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスは、複数の中間サブイベントを含むパン・ジェスチャを含み、ビューは2つのジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びパン・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可される。
【0130】
サブイベント情報の配信が始まる前(シーケンス番号0)、両方のジェスチャ・レコグナイザはイベント可能状態410である。フィンガーダウン・サブイベントを検出し(シーケンス番号1)、遅延を測定した(シーケンス番号2)後であっても、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態410に留まるが、その一方で、パン・ジェスチャ・レコグナイザはイベント開始済状態412に遷移する。指の移動の検出(シーケンス番号3)に応答して、サブイベントがシングルタップに対するジェスチャ定義に合致しないので、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。その後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント失敗状態430に留まる。しかし、パン・ジェスチャ・レコグナイザは、指の移動の検出(シーケンス番号4)に応答してイベント変更済状態414に遷移し、一部の実施形態において、指の接触の新しい位置を含む動作メッセージ(群)を送信する。追加の指の移動を検出した(シーケンス番号4及び5)後、パン・ジェスチャ・レコグナイザはイベント変更済状態414に留まるが、その一方で、指の移動を検出する度に動作メッセージ(群)を送信する。フィンガーリフトオフが検出された(シーケンス番号6)場合に、パン・ジェスチャ・レコグナイザはイベント終了済状態416に遷移する。
【0131】
イベント情報のフロー及びイベント・レコグナイザ間の相互作用を考慮すると、図5Aは、一部の実施形態に係るイベント情報のフローを示すブロック図である。(例えば、オペレーティングシステム118又は制御アプリケーション124における)イベント・ディスパッチャ・モジュール315はイベント情報を受信し、そのイベント情報をアプリケーション(例えば、132−1)に送信する。一部の実施形態において、アプリケーション132−1は、ビュー階層506の複数のビュー(例えば、ビュー316に対応する508、510及び512)と、複数のビューにおける複数のジェスチャ・レコグナイザ(516−1〜516−6)とを含む。アプリケーション132−1は、対象−動作ペア(例えば、522−1、522−2及び522−3)における対象値に対応する1つ以上のイベント・ハンドラ520も含む。イベント・ディスパッチャ・モジュール315は、ヒット・ビュー判定モジュール313からヒット・ビュー情報を受信し、ヒット・ビュー(例えば、512)又はヒット・ビュー(例えば、512)にアタッチされたイベント・レコグナイザ(群)にイベント情報を送信する。一部の実施形態において、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの部分集合のみがイベント情報(又はタッチ情報)を受信することを許可される(又は受信するように構成される)。イベント情報を受信することを許可されたこれらのジェスチャ・レコグナイザは、本明細書において「受信ジェスチャ・レコグナイザ」と呼ばれる。図5Aにおいて、ジェスチャ・レコグナイザ516−1及び516−2は、受信ジェスチャ・レコグナイザ514の集合内にある。その結果、イベント・ディスパッチャ・モジュール315は、受信ジェスチャ・レコグナイザの集合内のジェスチャ・レコグナイザ516−1及び516−2の両方にイベント情報を送信する。
【0132】
一部の実施形態において、ジェスチャ・レコグナイザは、他方のジェスチャ・レコグナイザがイベント又はサブイベントを対応するジェスチャとして認識することを阻止又は防止してもよい。この例において、ジェスチャ・レコグナイザ1(516−1)は、ジェスチャ・レコグナイザ2(516−2)がイベント又はサブイベントを対応するジェスチャとして認識することを防止する。その結果、この例において、ジェスチャ・レコグナイザ1(516−1)のみが動作メッセージ(518)を対応する対象−動作ペア(例えば、対象:動作1(522−1))に送信する。
【0133】
図5B及び図5Cは、一部の実施形態に係るジェスチャ認識方法を示すフローチャートである。図5Bは、ジェスチャ・レコグナイザが対応するデリゲートを呼び出すフローチャートを示し、図5Cは、ソフトウェア・アプリケーションが個別のジェスチャ・レコグナイザに対応するデリゲートを呼び出すフローチャートを示す。図5B及び図5Cにおいて、各列は各エンティティ又は各コンポーネント(例えば、ソフトウェア・アプリケーション、ジェスチャ・レコグナイザ又はデリゲート)において実行される処理を表す。
【0134】
図5Bにおいて、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のビュー(例えば、506、508、510)のうちの1つ以上のビューを表示する(530)。複数のビューは、複数のジェスチャ・レコグナイザ(例えば、516−1〜516−6)を含む。ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる(532)。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる(533−1)。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる(533−2)。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。以下の説明を通じて、割り当てられたデリゲートに対する各参照は、対応するデリゲートをも意味してもよく、デリゲートが割り当てられたジェスチャ・レコグナイザに対する各参照は、特定のデリゲートに対応するジェスチャ・レコグナイザをも意味してもよい。
【0135】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のイベントを検出し(534)、ジェスチャ・レコグナイザ(例えば、320)のうちの1つ以上を使用して各イベントを処理する(536)。
【0136】
個別のイベントは、(1つ以上のジェスチャ・レコグナイザ(例えば320)の)個別のジェスチャ・レコグナイザにおいて処理される(538)。デリゲートの動作を説明するために、イベントを処理する個別のジェスチャ・レコグナイザが対応するデリゲートを有すると仮定する。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートを呼び出し、割り当てられたデリゲートは、アプリケーション状態に従って1つ以上の値を判定するために実行される(540)。それに応答して、個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する(542)。
【0137】
ソフトウェア・アプリケーションは、イベントのうちの1つ以上に対応するジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って実行される(544)。
【0138】
言い換えると、これらの実施形態において、個別のジェスチャ・レコグナイザは、ジェスチャ・レコグナイザの挙動を判定する1つ以上の値を取得するために、割り当てられたデリゲートを呼び出す。上述したように、対応するデリゲートにより変更されるジェスチャ・レコグナイザの挙動は、タッチ/イベント情報を受信するかどうか、イベント可能状態から遷移するかどうか、及び/又は同時認識を許可するかどうかを含む。(場合によっては、他のジェスチャ・レコグナイザのデリゲートの調整された動作を伴う)デリゲートによる動作はまた、どのジェスチャ・レコグナイザがどのタッチを受信するかを制御し、どのジェスチャ・レコグナイザが「イベント認識済」又は「イベント開始済」状態に遷移することを許可されるかを判定し、同時認識を許可又は無効にすることにより、2つ以上のジェスチャ・レコグナイザの動作を調整する。
【0139】
図5Cにおいて、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のビュー(例えば、506、508、510)のうち1つ以上のビューを表示する(530)。複数のビューは、複数のジェスチャ・レコグナイザ(例えば、516−1〜516−6)を含む。ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる(532)。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる(533−1)。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる(533−2)。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。
【0140】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のタッチを検出し(535)、ジェスチャ・レコグナイザのうちの1つ以上を使用して1つ以上のタッチの各々を処理する(546)。1つ以上のタッチの各々を処理する際、ソフトウェア・アプリケーションは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する(548)。一部の実施形態において、候補ジェスチャ・レコグナイザは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザである(例えば、図5Aのジェスチャ・レコグナイザ516−1、516−2及び516−3)。
【0141】
個別の候補ジェスチャ・レコグナイザに割り当てられたデリゲートは、アプリケーション状態に従って「受信タッチ値」を取得するために実行される(550)。「受信タッチ値」は、個別の候補ジェスチャ・レコグナイザがイベント/タッチ情報を受信できるかどうか(例えば、図4C及び図4Dの「受信すべきか」のステップ450)を判定するために使用される。
【0142】
個別のデリゲートから取得された受信タッチ値に基づいて、受信ジェスチャ・レコグナイザの集合が識別される(552)。受信ジェスチャ・レコグナイザの集合は、候補ジェスチャ・レコグナイザの部分集合を含む(552)。一部の実施形態において、受信ジェスチャ・レコグナイザの集合は、割り当てられた個別のデリゲートを有しない全ての候補ジェスチャ・レコグナイザを含む。候補ジェスチャ・レコグナイザのうちの2つ以上が対応するデリゲートを有するならば、そのような各候補ジェスチャ・レコグナイザのデリゲートは、候補ジェスチャ・レコグナイザがイベント/タッチ情報を受信できるかを判定するために実行される。候補ジェスチャ・レコグナイザに対応するデリゲートから取得された「受信タッチ値」は、受信ジェスチャ・レコグナイザの集合を識別するために使用される。
【0143】
個別のタッチは、受信ジェスチャ・レコグナイザの集合において処理される(554)。個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果、イベント又はジェスチャが認識されるならば(図4C及び図4Dの「定義に合致するか」453を参照)、個別のジェスチャ・レコグナイザに対応するデリゲート(存在する場合)は、イベント又はジェスチャの認識が許可されるかを判定するために呼び出される。これは、図4C及び図4Dを参照して上述した「開始すべきか」の動作454に対応する。デリゲートは、状態遷移が許可されるかを示す1つ以上の値を返す。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する(542)。ソフトウェア・アプリケーションは、個別のタッチに対応するジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って実行される(545)。
【0144】
言い換えると、これらの実施形態において、ソフトウェア・アプリケーション(又はオペレーティングシステム118又は制御アプリケーション124)は、個別のタッチを処理すべき候補ジェスチャ・レコグナイザ(存在する場合)を示す値を取得するために個別の候補ジェスチャ・レコグナイザに対応するデリゲートを呼び出す。さらに、ジェスチャ・レコグナイザの挙動の他の側面は、割り当てられたデリゲートによりさらに変更されうる。
【0145】
図6A及び図6Bは、一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【0146】
方法600は、1つ以上のイベント・センサ(例えば、130)を有し、複数のビュー(例えば、アプリケーション・ビュー316)とソフトウェア・アプリケーション(例えば、317)のアプリケーション状態とを含むソフトウェア・アプリケーション(例えば、132)を実行するように構成された電子デバイス(例えば、デバイス102又は104)において実行される(602)。
【0147】
デバイスは、複数のビューのうちの1つ以上のビューを表示する(604)。表示された1つ以上のビューの個別のビューは、1つ以上のジェスチャ・レコグナイザ(例えば、イベント・レコグナイザ320−1)を含む。一部の実施形態において、表示された1つ以上のビューの少なくとも部分集合は1つ以上のジェスチャ・レコグナイザを含み、表示された1つ以上のビューの残りのビューはジェスチャ・レコグナイザを含まない。
【0148】
1つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは、対応するデリゲートを有する。一部の実施形態において、全てのジェスチャ・レコグナイザが対応するデリゲートを有するわけではない(すなわち、一部の実施形態において、一部のジェスチャ・レコグナイザは対応するデリゲートを有さない)。一部の実施形態において、個別のジェスチャ・レコグナイザは2つ以上のデリゲートに対応し、各デリゲートは、別個の条件に対して対応するジェスチャ・レコグナイザに対する別個の値を判定する(例えば、第1デリゲートは「受信すべきか」450を判定し、第2デリゲートは「認識が阻止されるか」451を判定する等)。一部の実施形態において、2つ以上のジェスチャ・レコグナイザが同一のデリゲートに対応する(例えば、同一のデリゲートを利用する)。
【0149】
一部の実施形態において、デバイスは個別のデリゲート(例えば、デリゲート321−1)を個別のジェスチャ・レコグナイザ(例えば、320−1)に割り当てる(606)(例えば、図5Bのステップ532の説明を参照)。これに代えて、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、それ故、デリゲートは実行時に割り当てられる必要はない。本明細書におけるイベント/ジェスチャ・レコグナイザの割り当てられたデリゲートに対する全ての参照は、イベント/ジェスチャ・レコグナイザの対応するデリゲートに同様に適用可能であることが理解され、対応するデリゲートに対する全ての参照は、割り当てられたデリゲートに等しく適用可能であることが理解される。
【0150】
一部の実施形態において、表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み(608)、デバイスは複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる。言い換えると、一部のジェスチャ・レコグナイザは割り当てられたデリゲートを有しなくてもよいので、デバイスはジェスチャ・レコグナイザの個数より少ないデリゲートを有してもよい。
【0151】
デバイスは1つ以上のイベントを検出する(610)。一部の実施形態において、デバイスは、センサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156を使用して1つ以上のイベントを検出する。
【0152】
デバイスは、個別のジェスチャ・レコグナイザを使用して1つ以上のイベントの個別のイベントを処理する(612)。個別のイベントの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを処理すること(例えば、イベント比較部332を使用してイベントとジェスチャ定義333とを比較すること)と、アプリケーション状態に従って1つ以上の値を判定するために対応するデリゲートを実行すること(例えば、図5Bの540)と、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報(例えば、ジェスチャ・レコグナイザが「タップ・ジェスチャ」又は「スワイプ・ジェスチャ」等のイベントを認識するかどうか、イベントの位置及びタイムスタンプ等の関連イベント情報、並びに/又は他の追加の情報)をソフトウェア・アプリケーションに条件付きで送信することとを含む。
【0153】
一部の実施形態において、デリゲートは、(「開始すべきか」、「受信すべきか」及び「同時認識」等の)イベント・レコグナイザ属性を判定するための命令を有し、実行された場合に1つ以上の対応する値を返す。一部の実施形態において、イベント・レコグナイザ属性に対する値は、アプリケーション状態に従ってソフトウェア・アプリケーションにより設定されうる。一部の実施形態において、属性に対する値は開発者により事前に定義される。一部の実施形態において、個別のイベント/ジェスチャ・レコグナイザの内部属性はデフォルト値を有し、デフォルト値はイベント/ジェスチャ・レコグナイザに対応するデリゲートにより上書きされうる。
【0154】
例えば、(例えば、ジェスチャ・レコグナイザの対応するデリゲートにより判定された1つ以上の値であって、ジェスチャ・レコグナイザがイベント可能状態410からイベント認識済状態420又はイベント開始済状態412に遷移できるか、若しくは阻止側のジェスチャ・レコグナイザが存在するにも関わらずジェスチャ・レコグナイザがイベントを同時に認識できるかを示す1つ以上の値に基づいて)ジェスチャ・レコグナイザがイベントを認識することを許可された場合に、デバイスは個別のイベントに対応する情報を送信する。一部の実施形態において、デバイスは、対応するジェスチャ定義又はその一部にイベントが合致する場合にのみ、個別のイベントに対応する情報を送信する。さらに、アプリケーション状態又は他の条件により、個別のジェスチャ・レコグナイザが個別のイベントに対応する情報を送信することが防止されうる。
【0155】
デバイスは、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーション(例えば、132−1)を実行する(614)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される(例えば、動作−対象ペア345に列挙されたイベント・ハンドラ322が起動される)。
【0156】
一部の実施形態において、1つ以上のイベント・センサ(例えば、130)は1つ以上のタッチを検出するように構成されたタッチセンサ面(例えば、156又は分離したタッチセンサ面)を含み、1つ以上のイベントは1つ以上のタッチを含み、個別のイベントを処理することは個別のタッチを処理することを含む(616)。一部の実施形態において、1つ以上のイベント・センサ(例えば、130)は加速度計を含み、1つ以上のイベントは電子デバイスの回転又は他の動きも含む。
【0157】
一部の実施形態において、デバイスは、割り当てられたデリゲートにより判定された1つ以上の値に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを条件付きで受信する(618)。例えば、個別のジェスチャ・レコグナイザが個別のタッチを受信することを対応するデリゲートにより判定された1つ以上の値(例えば、「受信タッチ値」)が許可する場合にのみ(例えば、図4C及び図4Dにおける「受信すべきか」450)、個別のジェスチャ・レコグナイザは個別のタッチを受信する。
【0158】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを含む(620)。これらの実施形態において、ステップ618において説明したように個別のタッチを条件付きで受信する代わりに、個別のジェスチャ・レコグナイザは個別のタッチを無視する。
【0159】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することを含む(622)。これらの実施形態において、個別のタッチが阻止され、それ故、個別のジェスチャ・レコグナイザに到達しないので、ジェスチャ・レコグナイザは、個別のタッチを条件付きで受信するか又は無視する必要がない。一部の実施形態において、個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することは、イベント情報を対応するジェスチャ・レコグナイザに送信しないようにイベント・ディスパッチャ・モジュール315に命令することを含む。
【0160】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している(例えば、個別のタッチがジェスチャ定義又はその一部に合致する)場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること(例えば、図4C及び図4Dの「開始すべきか」454)を含む(624)。一部の実施形態において、状態遷移可能値(例えば、「開始すべきか」の値)が状態遷移基準を満たすことを対応するデリゲートにより判定される場合に状態遷移が可能にされる。
【0161】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む(626)。言い換えると、状態遷移は、対応するデリゲートが遷移を可能にする(例えば、阻止しない)としても、条件付きで可能にされる。例えば、状態遷移の条件は、個別のタッチ/イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ/イベントを受信することを許可されるかどうか、及び/又は個別のタッチ/イベントの認識が阻止されるかどうかを含む。
【0162】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、ジェスチャを認識した別のジェスチャ・レコグナイザにより状態遷移が防止/無効にされたときに(条件付きで)無効にすることを含む。特に、ジェスチャ・レコグナイザは、他のジェスチャ・レコグナイザ(群)がイベント認識済状態420又はイベント開始済状態412に遷移することを1つのジェスチャ・レコグナイザが防止できるようにペアにされうる(又はグループ化されうる)(例えば、第1ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザを防止するように構成される場合に、第1ジェスチャ・レコグナイザは、イベント/タッチを認識すると、第2ジェスチャ・レコグナイザに対応するデリゲートにより返された値に関わらず第2ジェスチャ・レコグナイザがそのイベント/タッチを認識することを防止する)。
【0163】
一部の実施形態において、複数のジェスチャ・レコグナイザは優先順位に基づいて(例えば、コードのシーケンス、インスタンス化のシーケンス、個別のジェスチャ・レコグナイザに対応するビュー階層、若しくは開発者又はソフトウェア・アプリケーションにより割り当てられた優先順位に基づいて)列挙される。2つ以上のジェスチャ・レコグナイザが個別のタッチを同時に認識する場合に、優先順位が最も高いジェスチャ・レコグナイザは、他の全てのジェスチャ・レコグナイザが個別のタッチを認識することを阻止する。
【0164】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(628)。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、第2ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる(例えば、図4C及び図4Dのステップ452)。
【0165】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(630)。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる(例えば、図4C及び図4Dのステップ455及び456)。
【0166】
一部の実施形態において、個別のジェスチャ・レコグナイザにおける個別のタッチを処理することは、第1ジェスチャ・レコグナイザ及び第2ジェスチャ・レコグナイザにそれぞれ対応するデリゲートにより判定された値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む。
【0167】
図7A及び図7Bは、一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【0168】
方法700は、タッチセンサ面(例えば、156)を有し、複数のビュー(例えば、316)とソフトウェア・アプリケーション(例えば、317)のアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイス(例えば、デバイス104)において実行される(702)。
【0169】
デバイスは、複数のビュー(例えば、316)のうちの1つ以上のビューを表示する(704)。表示された1つ以上のビューの個別のビューは1つ以上のジェスチャ・レコグナイザ(例えば、320−1又は343−2)を含み、1つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは対応するデリゲート(例えば、321−1又は346)を有する。
【0170】
デバイスは、タッチセンサ面(例えば、156又は130)における1つ以上のタッチを検出する(706)。1つ以上のタッチはそれぞれ、表示された1つ以上のビュー内のタッチ位置を有する。
【0171】
デバイスは、1つ以上のタッチの個別のタッチを処理する(708)(例えば、イベント比較部332を使用して、個別のタッチがジェスチャ定義333に合致するかを判定する(453))。個別のタッチを処理することは、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを実行すること(例えば、図5Cの550)と、受信タッチ値が所定の基準(例えば、一部の実施形態において、所定の基準は、個別のジェスチャ・レコグナイザが受信ジェスチャ・レコグナイザ552であるということ)を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、554)と、個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信すること(例えば、542)とを含む(710)。
【0172】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む(712)(例えば、図3Bのアプリケーション・ビュー316及びレコグナイザ320、図5Aのビュー508、510及び512、並びにジェスチャ・レコグナイザ516)。別個のデリゲートは、複数のジェスチャ・レコグナイザの少なくとも部分集合に対応する。オプションとして、デバイスは、複数のジェスチャ・レコグナイザ(例えば、320)の少なくとも部分集合に別個のデリゲート(例えば、321)を割り当てる。1つ以上のタッチの個別のタッチを処理することは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別すること(例えば、548)と、対応するデリゲートを有する候補ジェスチャ・レコグナイザ毎に、アプリケーション状態に従って受信タッチ値を取得するために対応するデリゲートを実行すること(例えば、550)と、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別すること(例えば、552)と、受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、554)とを含む。
【0173】
一部の実施形態において、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの集合を識別することを含む。オプションとして、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、個別のタッチに対応するジェスチャ定義を含むジェスチャ・レコグナイザの集合を識別することを含む。さらに、一部の実施形態において、受信ジェスチャ・レコグナイザの集合を識別することは、対応するデリゲートが受信タッチ基準を満たす個別の受信タッチ値を提供する候補ジェスチャ・レコグナイザの部分集合を識別することを含む(例えば、受信タッチ値は、対応するジェスチャ・レコグナイザが個別のタッチを受信できることを示す)。
【0174】
一部の実施形態において、1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って対応するデリゲートを有する個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することと、アプリケーション状態に従って1つ以上の値を判定するためにデリゲートを実行することと、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともにデリゲートにより判定された1つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信することとを含む(718)。デバイスは、1つ以上のタッチに対応する、1つ以上の受信ジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する。
【0175】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している(例えば、個別のタッチがジェスチャ定義又はその一部に合致する)場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること(例えば、図4C及び図4Dの「開始すべきか」454)を含む(720)。
【0176】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む(722)。例えば、状態遷移のための条件は、個別のタッチ/イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ/イベントを受信することを許可されるかどうか、個別のタッチ/イベントの認識が阻止されるかどうか、及び/又はシステムレベルの命令(例えば、シャットダウン処理又はアプリケーションよりも高い優先順位を有する他の処理)が状態遷移を防止するかを含む。
【0177】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(724)。例えば、第2ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可する(例えば、図4C及び図4Dのステップ452)。
【0178】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理すること(例えば、図4C及び図4Dのステップ455及び456)を含む(726)。
【0179】
デバイスは、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する(例えば、545)(716)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される(例えば、動作−対象ペア345に列挙されたイベント・ハンドラ322が起動される)。
【0180】
図8A及び図8Bは、一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【0181】
方法800は、タッチセンサ面を有し、ソフトウェア・アプリケーションを実行するように構成された電子デバイス(例えば、デバイス104)において実行される(802)。
【0182】
デバイスは、ソフトウェア・アプリケーション(例えば、132−1)の1つ以上のビュー(例えば、316)を表示する(804)。表示された1つ以上のビューは、複数のジェスチャ・レコグナイザ(例えば、320)を含む。複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザ(例えば、図4A及び図4C)と、少なくとも1つの連続ジェスチャ・レコグナイザ(例えば、図4B及び図4D)とを含む。
【0183】
一部の実施形態において、離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。
【0184】
一部の実施形態において、離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して動作メッセージの単一の集合を送信するように構成される。複数の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は複数の動作メッセージを含む。単一の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は単一の動作メッセージを含む。
【0185】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態(例えば、図4A〜図4D)の集合を有する(822)。
【0186】
一部の実施形態において、離散ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第1集合を有する(824)。
●離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態410。
●個別のジェスチャの認識に対応するジェスチャ認識済状態420。
●離散ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態430。
【0187】
一部の実施形態において、連続ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第2集合を有する。
●連続ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態410。
●個別のジェスチャの初期認識に対応するジェスチャ開始済状態412。
●個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態414。
●認識された個別のジェスチャの完了に対応するジェスチャ終了済状態416。
●個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態418。
●連続ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態430。
【0188】
一部の実施形態において、ジェスチャ・レコグナイザ状態は割り当てられた値(例えば、ジェスチャ・レコグナイザ状態値)を有する。一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する(826)。
【0189】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザ及びスワイプ・ジェスチャ・レコグナイザのうちの1つ以上を含み(828)、少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの1つ以上を含む。
【0190】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含み(830)、少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【0191】
タップ・ジェスチャ・レコグナイザは、タップ・ジェスチャを認識するように構成される。スワイプ・ジェスチャ・レコグナイザは、スワイプ・ジェスチャ(例えば、タッチセンサ面に対するタッチのフリック)を認識するように構成される。長押しジェスチャ・レコグナイザは、長押しジェスチャ(例えば、押下及びタッチの保持)を認識するように構成される。ピンチ・ジェスチャ・レコグナイザは、ピンチ・ジェスチャ(例えば、2つ以上のタッチの接触及び相対的な移動)を認識するように構成される。パン・ジェスチャ・レコグナイザは、パン・ジェスチャ(例えば、タッチ及び1つ以上のタッチの整合性のある移動)を認識するように構成される。回転ジェスチャ・レコグナイザは、回転(例えば、接触及び2つ以上のタッチの回転移動)を認識するように構成される。変換ジェスチャ・レコグナイザは、変換ジェスチャ(例えば、パン、回転及びピンチを表す2つ以上のタッチの同時移動)を認識するように構成される。
【0192】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザ(例えば上述した離散ジェスチャ・レコグナイザの1つ以上)及び少なくとも1つの連続ジェスチャ・レコグナイザ(例えば、上述した連続ジェスチャ・レコグナイザの1つ以上)は、ソフトウェア開発者がソフトウェアライブラリを使用してこれらをサードパーティ・ソフトウェアに組み込めるようにソフトウェアライブラリに配布される。これと比較して、ビューはビュー・スタイル(例えば、ユーザインタフェース・オブジェクト及びフレームの色、サイズ及び形状)を有する。一部の実施形態において、所定のビュー・スタイルは、ソフトウェア開発者がソフトウェアライブラリ(又はテンプレート)を使用して所定のビュー・スタイルを有するソフトウェア・アプリケーションを開発できるように、UIインタフェースAPI(例えば、図2の204)の一部として配布される。
【0193】
デバイスは、1つ以上のタッチを検出する(図8Aの808)。一部の実施形態において、デバイスは、センサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156を使用して1つ以上のイベントを検出する。
【0194】
デバイスは、1つ以上のジェスチャ・レコグナイザを使用して各タッチを処理する(810)。個別のタッチの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、イベント比較部332を使用してイベントとジェスチャ定義333とを比較し、イベントがジェスチャ定義333又はその一部に合致するかを判定すること)と、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って1つ以上の動作メッセージの各々をソフトウェア・アプリケーションに条件付きで送信すること(例えば、個別のタッチがジェスチャ定義に合致した場合に動作メッセージを送信すること)とを含む(812)。
【0195】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有する(814)。1つ以上の個別の動作メッセージを条件付きで送信することは、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って1つ以上の個別の動作メッセージを条件付きで送信することを含む。例えば、ソフトウェア・アプリケーションのアプリケーション状態は、1つ以上の個別の動作メッセージを送信することを遅延又は防止しうる(例えば、システムリソースが過度に使用される場合、優先順位がより高い処理が処理される必要がある場合等)。
【0196】
デバイスは、タッチのうちの1つに対応するジェスチャ・レコグナイザのうちの1つ以上から受信された1つ以上の動作メッセージに従ってソフトウェア・アプリケーションを実行する(816)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上はジェスチャ・レコグナイザのうちの1つ以上から受信された動作メッセージに従って起動される。
【0197】
一部の実施形態において、デバイスは、個別のジェスチャ・レコグナイザからの追加の情報を要求する(818)。ソフトウェア・アプリケーションを実行することは、追加の情報にさらに従ってソフトウェア・アプリケーションを実行することを含む。例えば、個別のジェスチャ・レコグナイザは追加の情報(例えば、サブイベント毎のタイムスタンプ、ジッタ量、速度、方向、期間、倍率、角度等の詳細情報)を提供できる。
【0198】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含む(820)。
【0199】
一部の実施形態によると、図9は、上述したような本発明の原理に従って構成された電子デバイス900の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図9において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0200】
図9に示すように、電子デバイス900は、1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニット902と、1つ以上のイベント検知ユニット902に結合された処理ユニット906とを含む。一部の実施形態において、電子デバイスは、処理ユニット906に結合された表示ユニット904も含む。一部の実施形態において、処理ユニット906は、実行ユニット908、表示可能ユニット910、検出ユニット912、イベント処理ユニット914、送信ユニット916、レコグナイザ可能ユニット918、阻止ユニット920及び割り当てユニット922を含む。
【0201】
処理ユニット906は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを(例えば、実行ユニット908で)実行し、複数のビューのうちの1つ以上のビューの表示を(例えば、表示ユニット904に関する表示可能ユニット910で)可能にするように構成される。表示された1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット906は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを(例えば、イベント処理ユニット914で)処理し、アプリケーション状態に従って1つ以上の値を判定するために対応するデリゲートを(例えば、実行ユニット908で)実行し、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された1つ以上の値に従って個別のイベントに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット916で)条件付きで送信することにより、1つ以上のイベント検知ユニット902により検知された1つ以上のイベントを(例えば、検出ユニット912で)検出し、個別のジェスチャ・レコグナイザを使用して1つ以上のイベントの個別のイベントを(例えば、イベント処理ユニット914で)処理するように構成される。処理ユニット906は、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット908で)実行するように構成される。
【0202】
一部の実施形態において、1つ以上のイベント検知ユニット908は、1つ以上のタッチを検出するように構成されたタッチセンサ面ユニット(例えば、図10のタッチセンサ面ユニット1002)を含み、1つ以上のイベントは1つ以上のタッチを含み、処理ユニット906は個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0203】
一部の実施形態において、処理ユニット906は、個別のジェスチャ・レコグナイザが対応するデリゲートにより判定された1つ以上の値に従って個別のタッチを条件付きで受信することを(例えば、レコグナイザ可能ユニット918で)可能にするように構成される。
【0204】
一部の実施形態において、処理ユニット906は、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを可能にすることにより個別のタッチを(例えば、イベント処理ユニット914及び/又はレコグナイザ可能ユニット918で)処理するように構成される。
【0205】
一部の実施形態において、処理ユニット906は、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することにより個別のタッチを(例えば、イベント処理ユニット914及び/又は阻止ユニット920で)処理するように構成される。
【0206】
一部の実施形態において、処理ユニット906は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が対応するデリゲートにより可能にされたときに可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914及び/又はレコグナイザ可能ユニット918で)処理するように構成される。
【0207】
一部の実施形態において、処理ユニット906は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914及び/又は可能ユニット918で)処理するように構成される。
【0208】
一部の実施形態において、処理ユニット906は、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0209】
一部の実施形態において、処理ユニット906は、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0210】
一部の実施形態において、表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み、処理ユニット906は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを(例えば、割り当てユニット922で)割り当てるように構成される。
【0211】
一部の実施形態によると、図10は、上述したような本発明の原理に従って構成された電子デバイス1000の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図10において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0212】
図10に示すように、電子デバイス1000は、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニット1002と、タッチセンサ面ユニット1002に結合された処理ユニット1006とを含む。一部の実施形態において、電子デバイス1000は、処理ユニット1006に結合された表示ユニット1004も含む。一部の実施形態において、処理ユニット1006は、実行ユニット1008、表示可能ユニット1010、検出ユニット1012、タッチ処理ユニット1014、送信ユニット1016、割り当てユニット1018、識別ユニット1020及びレコグナイザ可能ユニット1022を含む。
【0213】
処理ユニット1006は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行し、複数のビューのうちの1つ以上のビューの表示を(例えば、表示ユニット1004に関する表示可能ユニット1010で)可能にするように構成される。表示された1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット1006は、タッチセンサ面ユニット1002において受信された1つ以上のタッチを(例えば、検出ユニット1012で)検出するように構成される。各タッチは、表示されたビューのうちの1つ以上のビュー内に入るタッチ位置を有する。処理ユニット1006は、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを(例えば、実行ユニット1008で)実行し、個別のタッチ値が所定の基準を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理し、個別のタッチに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット1016で)条件付きで送信することにより1つ以上のタッチの個別のタッチを処理するように構成される。処理ユニット1006は、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行するように構成される。
【0214】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む。処理ユニット1006は、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を(例えば、識別ユニット1020で)識別し、割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎にアプリケーション状態に従って受信タッチ値を取得するために割り当てられたデリゲートを(例えば、実行ユニット1008で)実行し、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを(例えば、識別ユニット1020で)識別し、受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理することにより、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを(例えば、割り当てユニット1018で)割り当て、1つ以上のタッチの個別のタッチを処理するように構成される。
【0215】
一部の実施形態において、処理ユニット1006は、デリゲートが個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って割り当てられた個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理し、アプリケーション状態に従って1つ以上の値を判定するために割り当てられたデリゲートを(例えば、実行ユニット1008で)実行し、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともに割り当てられたデリゲートにより判定された1つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット1016で)条件付きで送信することにより1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成され、タッチの1つ以上に対応する、受信ジェスチャ・レコグナイザの1つ以上から受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行するように構成される。
【0216】
一部の実施形態において、処理ユニット1006は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに(例えば、レコグナイザ可能ユニット1022で)可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【0217】
一部の実施形態において、処理ユニット1006は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに(例えば、レコグナイザ可能ユニット1022で)条件付きで可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【0218】
一部の実施形態において、処理ユニット1006は、第2ジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理するように構成される。
【0219】
一部の実施形態において、処理ユニット1006は、個別のジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理するように構成される。
【0220】
一部の実施形態によると、図11は、上述したような本発明の原理に従って構成された電子デバイス1100の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図11において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0221】
図11に示すように、電子デバイス1100は、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニット1102と、タッチセンサ面ユニット1102に結合された処理ユニット1106とを含む。一部の実施形態において、電子デバイス1100は、処理ユニット1106に結合された表示ユニット1104も含む。一部の実施形態において、処理ユニット1106は、実行ユニット1108、表示可能ユニット1110、検出ユニット1112、タッチ処理ユニット1114、送信ユニット1116及び要求ユニット1118を含む。
【0222】
処理ユニット1106は、ソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行し、ソフトウェア・アプリケーションの1つ以上のビューの表示を(例えば、表示ユニット1104に関する表示可能ユニット1110で)可能にするように構成される。表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み、複数のジェスチャ・レコグナイザは少なくとも1つの離散ジェスチャ・レコグナイザと少なくとも1つの連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。処理ユニット1106は、タッチセンサ面ユニット1102において受信された1つ以上のタッチを(例えば、検出ユニット1112で)検出し、ジェスチャ・レコグナイザのうちの1つ以上を使用して各タッチを(例えば、タッチ処理ユニット1114で)処理するように構成される。処理ユニット1106は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1114で)処理し、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージをソフトウェア・アプリケーションに(例えば、送信ユニット1116で)条件付きで送信することにより個別のタッチを処理するように構成される。処理ユニット1106は、タッチのうちの1つ以上に対応するジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従ってソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行するように構成される。
【0223】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態の集合を有する。
【0224】
一部の実施形態において、離散ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、個別のジェスチャの認識に対応するジェスチャ認識済状態と、離散ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有する。連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、連続ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有する。
【0225】
一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する。
【0226】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有し、処理ユニット1106は、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って1つ以上の動作メッセージを(例えば、送信ユニット1116で)条件付きで送信するように構成される。
【0227】
一部の実施形態において、処理ユニット1106は、個別のジェスチャ・レコグナイザからの追加の情報を(例えば、要求ユニット1118で)要求し、追加の情報にさらに従ってソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行するように構成される。
【0228】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理されたタッチの個数及び位置を含む。
【0229】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含む。少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの1つ以上を含む。
【0230】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含む。少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【0231】
説明の目的で、特定の実施形態を参照して上記説明を行った。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及びその実際的な応用例を最適に説明するために実施形態を選択して説明した。これにより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。
【技術分野】
【0001】
本発明は一般にジェスチャ入力を認識するための装置及び方法を含むがそれらに限定されないユーザインタフェース処理に関する。
【背景技術】
【0002】
電子デバイスは一般に、計算デバイスと相互作用するために使用されうるユーザインタフェースを含む。ユーザインタフェースは、ユーザインタフェースの種々の態様と相互作用するためのキーボード、マウス及びタッチセンサ面のような表示及び/又は入力デバイスを含む。入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第1集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプ、ピンチイン、ピンチアウト、2本指スワイプのうちの2つ以上)は、特定の状況(例えば、第1アプリケーションの特定のモード)において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況(例えば、異なるアプリケーション及び/又は第1アプリケーション内の異なるモード又は状況)において適切な入力として認識される。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは、複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要とする可能性がある。これらの問題及び同様の問題は、タッチ・ベースのジェスチャ以外の入力ソースを利用するユーザインタフェースにおいて発生しうる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従って、タッチ・ベースのジェスチャ及びイベントだけでなく、他の入力ソースからのジェスチャ及びイベントを認識する総合的なフレームワーク又はメカニズムを有するのが望ましく、これは計算デバイスの全てのアプリケーション・プログラムの事実上全ての状況又はモードに容易に適応可能であり、アプリケーションが更新された場合又は新しいアプリケーションが計算デバイスに追加された場合にほとんど又は全く修正を必要としない。
【課題を解決するための手段】
【0004】
上述の欠点に対処するために、一部の実施形態によると、1つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューの個別のビューは1つ以上のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、1つ以上のイベントを検出する工程と、前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理する工程とを含む。前記個別のイベントの処理は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のジェスチャ・レコグナイザの前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む。さらに、前記方法は、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0005】
一部の実施形態によると、電子デバイスは、イベントを検出するための1つ以上のイベント・センサと、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、複数のビューとアプリケーション状態とを有するソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、1つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令とをさらに含む。前記個別のジェスチャ・イベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0006】
一部の実施形態によると、コンピュータ可読記憶媒体は、イベントを検出するための1つ以上のイベント・センサを有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションは、1つ以上のイベントを検出するための命令と、前記個別のジェスチャ・レコグナイザを用いて前記検出されたイベントの個別のイベントを処理するための命令を含む。前記個別のイベントの処理のための命令は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0007】
一部の実施形態によると、タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記複数のビューのうちの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記方法は、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出する工程をさらに含む。前記方法は、前記1つ以上のタッチの個別のタッチを処理する工程をさらに含む。前記個別のタッチを処理する工程は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含む。前記個別のタッチを処理する工程はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程を含む。さらに、前記方法は、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0008】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記1つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0009】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記複数のビューのうちの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含む。個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記ソフトウェア・アプリケーションはまた、前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令を含む。前記ソフトウェア・アプリケーションはさらに、前記1つ以上のタッチの個別のタッチを処理するための命令を含む。前記個別のタッチを処理するための命令は、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令とを含む。前記個別のタッチを処理するための命令はまた、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令を含む。さらに、前記ソフトウェア・アプリケーションは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0010】
一部の実施形態によると、タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて方法が実行される。前記方法は、前記ソフトウェア・アプリケーションの1つ以上のビューを表示する工程を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。前記離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、前記連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記方法はまた、1つ以上のタッチを検出する工程と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理する工程とを含む。前記個別のタッチを処理する工程は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、前記方法はさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程を含む。
【0011】
一部の実施形態によると、電子デバイスは、タッチセンサ面と、1つ以上のプロセッサと、メモリと、前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを含む。前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、1つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0012】
一部の実施形態によると、コンピュータ可読記憶媒体は、タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含む。前記ソフトウェア・アプリケーションは、前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令を含む。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含む。前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記ソフトウェア・アプリケーションはまた、1つ以上のタッチを検出するための命令と、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令とを含む。前記個別のタッチの処理のための命令は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む。前記ソフトウェア・アプリケーションはさらに、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令を含む。
【0013】
一部の実施形態によると、電子デバイスは、1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニットと、前記1つ以上のイベント検知ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記1つ以上のイベント検知ユニットにより1つ以上のイベントを検出し、前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理することを、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【0014】
一部の実施形態によると、電子デバイスは、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、前記複数のビューのうちの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。前記処理ユニットは、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された1つ以上のタッチを検出するように構成される。前記処理ユニットは、前記1つ以上のタッチの個別のタッチを処理することを、前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成される。
【0015】
一部の実施形態によると、電子デバイスは、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、前記タッチセンサ面ユニットに結合された処理ユニットとを含む。前記処理ユニットは、ソフトウェア・アプリケーションを実行し、前記ソフトウェア・アプリケーションの1つ以上のビューの表示を可能にするように構成される。前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザと、少なくとも1つの連続ジェスチャ・レコグナイザとを含む。少なくとも1つの離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、少なくとも1つの連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。前記処理ユニットは、前記タッチセンサ面ユニットで受信された1つ以上のタッチを検出し、前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するように構成される。前記処理ユニットは、個別のタッチを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行うように構成される。前記処理ユニットは、前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成される。
【図面の簡単な説明】
【0016】
【図1A】、
【図1B】一部の実施形態に係る電子デバイスを示すブロック図である。
【図2】一部の実施形態に係る例示的な電子デバイスの入出力処理スタックの図である。
【図3A】一部の実施形態に係る例示的なビュー階層を示す図である。
【図3B】一部の実施形態に係るイベント処理のための例示的なコンポーネントを示すブロック図である。
【図3C】一部の実施形態に係るジェスチャ・レコグナイザの例示的なクラス及びインスタンスを示すブロック図である。
【図4A】、
【図4B】、
【図4C】、
【図4D】一部の実施形態に係る例示的な状態遷移マシンを示すフローチャートである。
【図5A】一部の実施形態に係るイベント情報のフローを示すブロック図である。
【図5B】、
【図5C】一部の実施形態に係るジェスチャ認識方法を示す高レベル・フローチャートである。
【図6A】、
【図6B】一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【図7A】、
【図7B】一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【図8A】、
【図8B】一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【図9】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図10】一部の実施形態に係る電子デバイスの機能ブロック図である。
【図11】一部の実施形態に係る電子デバイスの機能ブロック図である。
【発明を実施するための形態】
【0017】
図面を通じて、同様の参照符号は対応する部分を示す。
【0018】
以下、実施形態を詳細に参照する。実施形態の例を添付の図面に示す。以下の詳細な説明において、本発明を完全な理解を提供するために多くの特定の詳細が説明される。しかし、本発明は、これらの特定の詳細を含まずに実施されてもよいことが当業者には明らかであるだろう。他の例において、実施形態の態様を不必要に曖昧にしないために、周知の方法、手順、コンポーネント、回路及びネットワークについては詳細に記載していない。
【0019】
種々の要素を記載するために第1、第2などの用語が本明細書において使用されるが、これらの要素はこれらの用語により限定されるべきではないことが理解されるだろう。これらの用語は、1つの要素を別の要素と区別するためだけに使用される。例えば本発明の範囲から逸脱せずに、第1接触が第2接触と呼ばれてもよく、同様に第2接触が第1接触と呼ばれてもよい。第1接触及び第2接触は両方とも接触であるが同一の接触ではない。
【0020】
本明細書において本発明の説明に使用される専門用語は、特定の実施形態を説明するためのものであり、本発明を限定することを意図しない。本発明の説明及び添付の特許請求の範囲において使用されるように、文脈で別段の明記が無い限り、単数形「a」、「an」及び「the」は複数形を含むことを意図する。本明細書で使用されるような「及び/又は」という用語は、列挙された関連する項目のうちの1つ以上のものの任意且つ全ての可能な組み合わせを参照し、包含することが理解されるだろう。「備える」及び/又は「備えている」という用語は、本明細書において使用される場合に、規定された特徴、数字、ステップ、動作、要素及び/又はコンポーネントの存在を特定するが、1つ以上の他の特徴、数字、ステップ、動作、要素、コンポーネント及び/又はこれらのグループの存在又は追加を除外しないことがさらに理解されるだろう。
【0021】
本明細書で使用されるように、「ならば」という用語は、状況に応じて「場合に」又は「時に」又は「判定したことに応答して」又は「検出したことに応答して」を意味すると解釈される。同様に、「判定されたならば」又は「[規定された状態又はイベント]が検出されたならば」という句は、状況に応じて「判定すると」又は「判定したことに応答して」又は「(規定された状態又はイベント)を検出した時に」又は「(規定された状態又はイベント)を検出したことに応答して」を意味すると解釈される。
【0022】
本明細書で使用されるように、「イベント」という用語は、デバイスの1つ以上センサにより検出された入力を示す。特に、「イベント」という用語はタッチセンサ面におけるタッチを含む。イベントは1つ以上のサブイベントを含む。サブイベントは典型的に、イベントに対する変更を示す(例えば、タッチのタッチ・ダウン、タッチ・ムーブ及びリフトオフはサブイベントでありうる)。1つ以上のサブイベントのシーケンスにおけるサブイベントは、とりわけキー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウス移動、マウスボタン押下、マウスボタン解放、ペンスタイラス・タッチ、ペンスタイラス移動、ペンスタイラス解放、音声命令、検出された眼球運動、バイオメトリック入力及び検出されたユーザの生理学的変化を含むがこれらに限定されない多くの形態を含む。イベントは単一のサブイベント(例えば、デバイスの横方向の短い動き)を含みうるので、本明細書で使用される「サブイベント」という用語はイベントも示す。
【0023】
本明細書で使用されるように、「イベント・レコグナイザ」及び「ジェスチャ・レコグナイザ」という用語は、ジェスチャ又は他のイベント(例えばデバイスの動き)を認識できるレコグナイザを示すために交換可能に使用される。
【0024】
上述したように、入力デバイスとしてタッチセンサ面を有する一部のデバイスにおいて、タッチ・ベースのジェスチャの第1集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプの2つ以上)は、特定の状況(例えば、第1アプリケーションの特定のモード)において適切な入力として認識され、タッチ・ベースのジェスチャの他の異なる集合は、他の状況(例えば、異なるアプリケーション及び/又は第1アプリケーション内の異なるモード又は状況)において適切な入力として認識される。さらに、2つ以上の適切な入力(又はジェスチャ)は、互いに干渉するか又は矛盾しうる(例えば、シングルタップを検出した後に、シングルタップを完全なシングルタップ・ジェスチャとして認識するか又はダブルタップ・ジェスチャの一部として認識するかを決定する必要がある)。その結果、タッチ・ベースのジェスチャを認識し、それに応答するのに必要とされるソフトウェア及びロジックは複雑になる可能性があり、アプリケーションが更新される度又は新しいアプリケーションが計算デバイスに追加される度に修正を必要としうる。
【0025】
タッチセンサ面を有するデバイスで実行するアプリケーションを制御するためにタッチ・ベースのジェスチャを使用する場合に、タッチは時間的側面及び空間的側面の両方を有する。フェーズと呼ばれる時間的側面は、いつタッチが始まったか、それが移動しているか又は静止しているか、並びにいつそれが終了したか、すなわちいつ指が画面から持ち上げられたかを示す。タッチの空間的側面は、タッチが発生したビュー又はユーザインタフェース・ウィンドウの集合である。タッチが検出されるビュー又はウィンドウは、ビュー階層のプログラムレベルに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれ、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【0026】
図1A及び図1Bは、一部の実施形態に係る電子デバイス102、104の種々の実施形態を示すブロック図である。電子デバイス102又は104は、デスクトップ・コンピュータシステム、ラップトップ・コンピュータシステム、ネットブック・コンピュータシステム、移動体電話機、スマートフォン、携帯情報端末又はナビゲーションシステムを含むがこれらに限定されない任意の電子デバイスであってもよい。電子デバイスはまた、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイ(例えば、図1Bのタッチセンサ・ディスプレイ156)を有するポータブル電子デバイス、ユーザインタフェースを提示するように構成されたタッチスクリーン・ディスプレイを含むコンピュータ、タッチセンサ面とユーザインタフェースを提示するように構成されたディスプレイとを有するコンピュータ、若しくはコンシューマ電子デバイス、移動体電話機、ビデオゲームシステム、電子音楽プレーヤ、タブレットPC、電子書籍読書システム、電子書籍、PDA、電子オーガナイザ、電子メールデバイス、ラップトップ、ネットブック又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート機器等を含むがこれらに限定されない任意の他の形態の計算デバイスであってもよい。電子デバイス102又は104はユーザインタフェース113を含む。
【0027】
一部の実施形態において、電子デバイス104は、タッチスクリーン・ディスプレイを含む。これらの実施形態において、ユーザインタフェース113は、電子デバイス102及び104と相互作用するためにユーザにより使用されるオンスクリーン・キーボード(不図示)を含みうる。これに代えて、キーボードは電子デバイス104(又は電子デバイス102)から分離した別個のものであってもよい。例えばキーボードは、電子デバイス102又は104に結合された有線又は無線キーボードでありうる。
【0028】
一部の実施形態において、電子デバイス102は、電子デバイス102に結合された、ディスプレイ126と1つ以上の入力デバイス128(例えば、キーボード、マウス、トラックボール、マイク、物理ボタン(群)、タッチパッド等)とを含む。これらの実施形態において、入力デバイス128のうちの1つ以上は、場合によっては電子デバイス102から分離した別個のものであってもよい。例えば、1つ以上の入力デバイスは、場合によっては電子デバイスから分離してもよいキーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの1つ以上を含みうる。オプションとして、デバイス102又は104は、1つ以上の加速度計、ジャイロスコープ、GPSシステム、スピーカ、赤外線(IR)センサ、バイオメトリック・センサ、カメラ等の1つ以上のセンサ130を含んでもよい。なお、入力デバイス128又はセンサ130である種々の例示的なデバイスの上記説明は、本明細書で説明する実施形態の動作に重要なものではなく、本明細書で入力デバイスとして説明される任意の入力デバイス又はセンサ・デバイスはセンサとして同様に適切に説明され、センサとして説明される任意の入力デバイス又はセンサ・デバイスは入力デバイスとして同様に適切に説明される。一部の実施形態において、1つ以上のセンサ130により生成された信号はイベントを検出する入力ソースとして使用される。
【0029】
一部の実施形態において、電子デバイス104は、電子デバイス104に結合された、タッチセンサ・ディスプレイ156(すなわち、タッチセンサ面を有するディスプレイ)と、1つ以上の入力デバイス128とを含む。一部の実施形態において、タッチセンサ・ディスプレイ156は、2つ以上の別個の同時(又は部分的に同時)のタッチを検出する機能を有し、これらの実施形態において、ディスプレイ156は、本明細書においてマルチタッチ・ディスプレイ又はマルチタッチセンサ・ディスプレイと呼ばれる場合もある。
【0030】
本明細書で説明する電子デバイス102又は104の一部の実施形態において、入力デバイス128は電子デバイス102又は104に配置される。他の実施形態において、入力デバイス128のうちの1つ以上は、電子デバイス102又は104から分離した別個のものであり、例えば入力デバイス128のうちの1つ以上は、ケーブル(例えば、USBケーブル)又は無線接続(例えば、Bluetooth(登録商標)接続)により電子デバイス102又は104に結合されうる。
【0031】
入力デバイス128を使用する場合に、又は電子デバイス104のタッチセンサ・ディスプレイ156においてタッチ・ベースのジェスチャを実行する場合に、ユーザは電子デバイス102又は104の1つ以上のCPU110により処理されるサブイベントのシーケンスを生成する。一部の実施形態において、電子デバイス102又は104の1つ以上のCPU110は、イベントを認識するためにサブイベントのシーケンスを処理する。
【0032】
電子デバイス102又は104は典型的に、1つ以上のシングルコア又はマルチコア・プロセッシングユニット(「CPU」又は「CPU群」)110だけでなく、1つ以上のネットワーク又は他の通信インタフェース112とをそれぞれ含む。電子デバイス102又は104は、メモリ111と、コンポーネントを相互接続するための1つ以上の通信バス115とをそれぞれ含む。通信バス115は、(本明細書では不図示の)システムコンポーネントを相互接続し、これらの間の通信を制御する(チップセットと呼ばれる場合もある)回路構成を含む。上記で簡単に説明したように、電子デバイス102又は104は、ディスプレイ(例えば、ディスプレイ126又はタッチセンサ・ディスプレイ156)を含むユーザインタフェース113を含む。さらに、電子デバイス102又は104は典型的に、入力デバイス128(例えば、キーボード、マウス、タッチセンサ面、キーパッド等)を含む。一部の実施形態において、入力デバイス128はオンスクリーン入力デバイス(例えば、表示デバイスのタッチセンサ面)を含む。メモリ111は、DRAM、SRAM、DDRRAM又は他のランダムアクセス固体メモリデバイス等の高速ランダムアクセスメモリを含んでもよく、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス又は他の不揮発性固体記憶デバイス等の不揮発性メモリを含んでもよい。メモリ111は、場合によってはCPU(群)110から離れて配置された1つ以上の記憶デバイスを含みうる。メモリ111又はこれに代えてメモリ111内の不揮発性メモリデバイス(群)は、コンピュータ可読記憶媒体を含む。一部の実施形態において、(電子デバイス102又は104の)メモリ111又はメモリ111のコンピュータ可読記憶媒体は、以下のプログラム、モジュール及びデータ構造、若しくはこれらの部分集合を格納する。
●種々の基本システムサービスを処理し、ハードウェア依存のタスクを実行するプロシージャを含むオペレーティングシステム118。
●1つ以上の個別の通信インタフェース112(有線又は無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等の1つ以上の通信ネットワークとを介して電子デバイス102又は104を他のデバイスにそれぞれ接続するために使用される通信モジュール120。
●ユーザインタフェース・オブジェクトを含むユーザインタフェースをディスプレイ126又はタッチセンサ・ディスプレイ156に表示するために使用されるユーザインタフェース・モジュール122。
●処理(例えば、ヒット・ビュー判定、スレッド管理及び/又はイベント監視等)を制御するために使用される制御アプリケーション124。一部の実施形態において、制御アプリケーション124はランタイム・アプリケーションを含む。他の実施形態において、ランタイム・アプリケーションは制御アプリケーション124を含む。
●オペレーティングシステム118内の種々の別の実施形態において又はアプリケーション・ソフトウェア132において実装されうるイベント配信システム130。しかし、一部の実施形態において、イベント配信システム130の一部の態様はオペレーティングシステム118において実装され、他の態様(例えば、イベント・ハンドラの少なくとも部分集合)はアプリケーション・ソフトウェア132において実装される。
●1つ以上のソフトウェア・アプリケーション(例えば、電子メール・アプリケーション、ウェブブラウザ・アプリケーション、テキストメッセージング・アプリケーション等)を含むアプリケーション・ソフトウェア132。各ソフトウェア・アプリケーションは典型的に、少なくとも実行時にソフトウェア・アプリケーション及びそのコンポーネント(例えば、ジェスチャ・レコグナイザ及びデリゲート)の状態を示すアプリケーション状態を有する。以下に説明するアプリケーション内部状態317(図3B)を参照。
●ソフトウェア・アプリケーション及びこれらのコンポーネント(例えば、ジェスチャ・レコグナイザ及びデリゲート)の状態を示すアプリケーション状態と、タッチセンサ・ディスプレイ156又はディスプレイ126の種々の領域を占有するアプリケーション、ビュー又は他の情報を示す表示状態と、デバイスの種々のセンサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156から取得された情報を含むセンサ状態と、デバイスの位置及び/又は姿勢に関する位置情報とのうちの1つ以上を含むデバイス/グローバル内部状態134。
【0033】
上記の識別された要素のぞれぞれは、上述したメモリデバイスの1つ以上に格納されてもよく、本明細書で説明する機能を実行する命令の集合に対応する。命令の集合は、1つ以上のプロセッサ(例えば、1つ以上のCPU110)により実行されうる。上記の識別されたモジュール又はプログラム(すなわち、命令の集合)は、別個のソフトウェアプログラム、プロシージャ又はモジュールとして実装される必要がないので、これらのモジュールの種々の部分集合は、種々の実施形態において組み合わされうるか又は他のように再構成されうる。一部の実施形態において、メモリ111は、上記で識別されたモジュール及びデータ構造の部分集合を格納してもよい。さらに、メモリ111は、上述されていない追加のモジュール及びデータ構造を格納してもよい。
【0034】
図2は、本発明の一部の実施形態に係る例示的な電子デバイス又は装置(例えば、デバイス102又は104)の入出力処理スタック200の図である。デバイスのハードウェア(例えば、電子回路構成)212は、入出力処理スタック200のベース・レベルにある。ハードウェア212は、図1A及び/又は図1Bに示されたコンポーネント等の種々のハードウェア・インタフェース・コンポーネントを含む。ハードウェア212は、上述のセンサ130のうちの1つ以上も含みうる。入出力処理スタック200の他の全ての要素(132、204〜210)は、ハードウェア212から受信した入力を処理し、ハードウェア・ユーザインタフェース(例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータのうちの1つ以上)を介して提示される種々の出力を生成するソフトウェア・プロシージャ又はソフトウェア・プロシージャの一部である。
【0035】
ドライバ又はドライバの集合210はハードウェア212と通信する。ドライバ210は、ハードウェア212から入力データを受信し、受信した入力データを処理する。コアオペレーティングシステム(「OS」)208はドライバ(群)210と通信できる。コアOS208は、ドライバ(群)210から受信した入力生データを処理する。一部の実施形態において、ドライバ210はコアOS208の一部であるとみなされうる。
【0036】
OSアプリケーション・プログラミング・インタフェース(「OS API」)の集合206は、コアOS208と通信するソフトウェア・プロシージャである。一部の実施形態において、API206は、デバイスのオペレーティングシステムに含まれるが、コアOS208よりも上のレベルにある。API206は、本明細書で説明する電子デバイス又は装置で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース(UI)API204はOS API206を利用できる。デバイスで実行するアプリケーション・ソフトウェア(「アプリケーション」)132は、ユーザと通信するためにUI API204を利用できる。続いて、UI API204は、下位レベルの要素と通信し、最終的に、例えばマルチタッチ・ディスプレイ156である種々のユーザインタフェース・ハードウェアと通信する。
【0037】
入出力処理スタック200の各層は自身よりも下の層を利用できるが、これは必ずしも必要とされない。例えば、一部の実施形態において、アプリケーション132はOS API206と通信することもある。一般に、OS API層206以上の層は、プライベートであるとみなされるので、コアOS208、ドライバ(群)210又はハードウェア212に直接にアクセスしなくてもよい。層内のアプリケーション132及びUI API204は、通常、OS API206を直接に呼び出し、続いて、OS API206は、コアOS208、ドライバ(群)210及びハードウェア212の層にアクセスする。
【0038】
別のように示すと、電子デバイス102又は104の1つ以上のハードウェア要素212と、例えば(図2に示す)ドライバ(群)210、(図2に示す)コアOS(オペレーティングシステム)208、(図2に示す)オペレーティングシステムAPIソフトウェア206及び(図2に示す)アプリケーション・ユーザインタフェースAPIソフトウェア204のような、デバイスで実行するソフトウェアとは、入力デバイス(群)128及び/又はタッチセンサ・ディスプレイ156のうちの1つ以上において、(ジェスチャのサブイベントに対応しうる)入力イベントを検出し、アプリケーション132に配信されるイベントに入力イベントが対応するか及びいつ対応するかを判定するために現在アクティブであるイベント・レコグナイザの集合により使用される(デバイス102又は104のメモリに格納される)種々のデータ構造を生成又は更新する。イベント認識の方法、装置及びコンピュータプログラムの実施形態について、以下にさらに詳細に説明する。
【0039】
図3Aは、この例では最も外側のビュー302に表示された探索プログラムである例示的なビュー階層300を示す。最も外側のビュー302は一般に、ユーザが直接に相互作用しうるユーザインタフェース全体を包含し、例えば以下のような従属ビューを含む。
●探索結果をグループ化し、縦方向にスクロール可能である探索結果パネル304。
●テキスト入力を受け付ける探索フィールド306。
●迅速なアクセスのためにアプリケーションをグループ化するホーム列310。
【0040】
この例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層300におけるビュー・レベルの個数は、階層の相異なる分岐において異なってもよく、1つ以上の従属ビューは下位レベルの従属ビューを有し、1つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。図3Aに示す例を引き続き参照すると、探索結果パネル304は、探索結果毎に分離した(パネル304に従属する)従属ビュー305を含む。本明細書において、この例は、地図ビュー305と呼ばれる従属ビューにおける1つの探索結果を示す。探索フィールド306は、本明細書でコンテンツクリア・アイコン・ビュー307と呼ばれる従属ビューを含み、これは、ユーザがビュー307のコンテンツクリア・アイコンに対して特定の動作(例えば、シングルタッチ・ジェスチャ又はシングルタップ・ジェスチャ)を実行した場合に探索フィールドのコンテンツをクリアする。ホーム列310は、連絡先アプリケーション、電子メール・アプリケーション、ウェブブラウザ及びiPod(登録商標)ミュージックインタフェースにそれぞれ対応する従属ビュー310−1、310−2、310−3及び310−4を含む。
【0041】
タッチ・サブイベント301−1は、最も外側のビュー302において表現される。タッチ・サブイベント301−1の位置が探索結果パネル304及び地図ビュー305の両方の上にあると仮定すると、タッチ・サブイベントは、それぞれ301−2及び301−3としてもこれらのビュー上にさらに表現される。タッチ・サブイベントの能動的関与ビューは、ビュー探索結果パネル304、地図ビュー305及び最も外側のビュー302を含む。図3B及び図3Cを参照して、サブイベント配信及び能動的関与ビューに関する追加の情報を以下に提供する。
【0042】
ビュー(及び対応するプログラム・レベル)はネストされうる。言い換えると、ビューは他のビューを含みうる。従って、第1ビューに関連するソフトウェア要素(群)(例えば、イベント・レコグナイザ)は、第1ビュー内のビューに関連する1つ以上のソフトウェア要素を含むか又はそれにリンクされうる。アプリケーションに関連するビューもあれば、グラフィカルユーザインタフェース、ウィンドウマネージャ等の上位レベルのOS要素に関連するビューもある。
【0043】
図3Bは、一部の実施形態に係るイベント処理のための例示的なコンポーネント(例えば、イベント処理コンポーネント390)を示すブロック図である。一部の実施形態において、(図1A及び図1Bの)メモリ111は、(例えば、オペレーティングシステム118における)イベント・レコグナイザ・グローバルメソッド311と、個別のアプリケーション132−1とを含む。
【0044】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、イベント・モニタ312と、ヒット・ビュー判定モジュール313と、アクティブイベント・レコグナイザ判定モジュール314と、イベント・ディスパッチャ・モジュール315とを含む。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311はイベント配信システム130内に配置される。一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311はオペレーティングシステム118において実装される。これに代えて、イベント・レコグナイザ・グローバルメソッド311はアプリケーション132−1において実装される。さらに他の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、スタンドアロン・モジュール又はメモリ111に格納された別のモジュール(例えば、接触/動作モジュール(不図示))の一部として実装される。
【0045】
イベント・モニタ312は、センサ130、タッチセンサ・ディスプレイ156及び/又は入力デバイス128からイベント情報を受信する。イベント情報は、イベント(例えば、マルチタッチ・ジェスチャ若しくはデバイス102又は104の動きの一部であるタッチセンサ・ディスプレイ156におけるユーザ・タッチ)及び/又はサブイベント(例えば、タッチセンサ・ディスプレイ156にわたるタッチの移動)に関する情報を含む。例えば、タッチ・イベントについてのイベント情報は、タッチの位置及びタイムスタンプのうちの1つ以上を含む。同様に、スワイプ・イベントについてのイベント情報は、スワイプの位置、タイムスタンプ、方向及び速度のうちの2つ以上を含む。センサ130、タッチセンサ・ディスプレイ156及び入力デバイス128は、イベント及びサブイベント情報をイベント・モニタ312に直接又は周辺インタフェースを介して送信し、イベント・モニタ312はイベント情報を読み出し、格納する。センサ130は、近接センサ、加速度計(群)、ジャイロスコープ、マイク及びビデオカメラのうちの1つ以上を含む。一部の実施形態において、センサ130は、入力デバイス128及び/又はタッチセンサ・ディスプレイ156も含む。
【0046】
一部の実施形態において、イベント・モニタ312は、所定の間隔で、センサ130及び/又は周辺インタフェースに要求を送信する。これに応答して、センサ130及び/又は周辺インタフェースはイベント情報を送信する。他の実施形態において、センサ130及び周辺インタフェースは、重大イベント(例えば、所定の雑音閾値を超え且つ/又は所定の期間よりも長い期間の入力の受信)があった場合にのみイベント情報を送信する。
【0047】
イベント・モニタ312は、イベント情報を受信し、イベント情報を配信する先のアプリケーション132−1及びアプリケーション132−1のアプリケーション・ビュー316−2を判定する。
【0048】
一部の実施形態において、イベント・レコグナイザ・グローバルメソッド311は、ヒット・ビュー判定モジュール313及び/又はアクティブイベント・レコグナイザ判定モジュール314も含む。
【0049】
ヒット・ビュー判定モジュール313は、タッチセンサ・ディスプレイ156が2つ以上のビューを表示する場合にイベント又はサブイベントが行われた1つ以上のビュー内の位置を判定するためのソフトウェア・プロシージャを提供する。ビューは、ユーザがディスプレイ上で見られる制御及び他の要素から構成される。
【0050】
アプリケーション132−1に関連するユーザインタフェースの別の態様は、本明細書においてアプリケーション・ビュー又はユーザインタフェース・ウィンドウと呼ばれることもあるセット・ビュー316であり、このビューにおいて、情報が表示され、タッチ・ベースのジェスチャが発生する。タッチが検出される(各アプリケーションの)アプリケーション・ビューは、アプリケーションのビュー階層内の特定のビューに対応する。例えば、タッチが検出される最下位レベルのビューはヒット・ビューと呼ばれてもよく、適切な入力として認識されるイベントの集合は、タッチ・ベースのジェスチャを開始する最初のタッチのヒット・ビューに少なくとも部分的に基づいて判定されうる。
【0051】
ヒット・ビュー判定モジュール313は、イベント及び/又はサブイベントに関連する情報を受信する。アプリケーションが階層に編成された複数のビューを有する場合に、ヒット・ビュー判定モジュール313は、イベント又はサブイベントを処理すべき階層の最下位のビューとしてヒット・ビューを識別する。ほとんどの状況において、ヒット・ビューは、開始イベント又はサブイベント(すなわち、ジェスチャを形成するイベント及び/又はサブイベントのシーケンスの最初のイベント又はサブイベント)が発生する最下位レベルのビューである。ヒット・ビューがヒット・ビュー判定モジュールにより識別されると、ヒット・ビューは典型的に、ヒット・ビューとして識別された同一のタッチ又は入力ソースに関する全てのイベント及び/又はサブイベントを受信する。
【0052】
アクティブイベント・レコグナイザ判定モジュール314は、イベント及び/又はサブイベントの特定のシーケンスを受信すべきであるビュー階層内の1つ以上のビューを判定する。一部の適用状況において、アクティブイベント・レコグナイザ判定モジュール314は、ヒット・ビューのみがイベント及び/又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、アクティブイベント・レコグナイザ判定モジュール314は、イベント又はサブイベントの物理的な位置を含む全てのビューが能動的関与ビューであることを判定し、それ故、全ての能動的関与ビューがイベント及び/又はサブイベントの特定のシーケンスを受信すべきであることを判定する。他の適用状況において、タッチ・イベント及び/又はサブイベントが1つの特定のビューに関連する領域に全体的に制限されるとしても、階層の上位レベルのビューは、能動的関与ビューとして依然として存在する。
【0053】
イベント・ディスパッチャ・モジュール315は、イベント情報を(本明細書では「ジェスチャ・レコグナイザ」とも呼ばれる)イベント・レコグナイザ(例えば、イベント・レコグナイザ320−1)に振り分ける。アクティブイベント・レコグナイザ判定モジュール314を含む実施形態において、イベント・ディスパッチャ・モジュール315は、アクティブイベント・レコグナイザ判定モジュール314により判定されたイベント・レコグナイザにイベント情報を配信する。一部の実施形態において、イベント・ディスパッチャ・モジュール315はイベント情報をイベントキューに格納し、イベント情報は個別のイベント・レコグナイザ320(又は個別のイベント・レコグナイザ320のイベント受信部331)により読み出される。
【0054】
一部の実施形態において、アプリケーション132−1は、アプリケーションがアクティブであるか又は実行中の場合にタッチセンサ・ディスプレイ156に表示される現在のアプリケーション・ビュー(群)を示すアプリケーション内部状態317を含む。一部の実施形態において、デバイス/グローバル内部状態134は、現在アクティブであるアプリケーション(群)を判定するためにイベント・レコグナイザ・グローバルメソッド311により使用され、アプリケーション内部状態317は、イベント情報を配信する先のアプリケーション・ビュー316を判定するためにイベント・レコグナイザ・グローバルメソッド311により使用される。
【0055】
一部の実施形態において、アプリケーション内部状態317は、アプリケーション132−1が実行を再開する場合に使用される再開情報と、アプリケーション132−1により表示中の情報を示すか又は表示の準備が整っている情報を示すユーザインタフェース状態情報と、ユーザがアプリケーション132−1の前の状態又はビューに戻ることを可能にする状態キューと、ユーザにより行われた前の動作のリドゥ/アンドゥ・キューとのうちの1つ以上のような追加の情報(例えば、図3Cの344)を含む。一部の実施形態において、アプリケーション内部状態317は、コンテキスト情報/テキスト及びメタデータ318をさらに含む。
【0056】
一部の実施形態において、アプリケーション132−1は1つ以上のアプリケーション・ビュー316を含み、各アプリケーション・ビューは、アプリケーションのユーザインタフェースの個別のビュー内で発生するタッチ・イベントを処理するための命令を含む。アプリケーション132−1の少なくとも1つのアプリケーション・ビュー316は、1つ以上のイベント・レコグナイザ320と1つ以上のイベント・ハンドラ322とを含む。典型的に、個別のアプリケーション・ビュー316は、複数のイベント・レコグナイザ320と複数のイベント・ハンドラ322とを含む。他の実施形態において、イベント・レコグナイザ320のうちの1つ以上は、ユーザインタフェース・キット(不図示)又はアプリケーション132−1がメソッド及び他の属性を継承する上位レベルのオブジェクトのような、分離したモジュールの一部である。一部の実施形態において、個別のアプリケーション・ビュー316は、データ更新部、オブジェクト更新部、GUI更新部及び/又はイベント・データ受信部のうちの1つ以上も含む。
【0057】
個別のイベント・レコグナイザ320−1は、イベント・ディスパッチャ・モジュール315からイベント情報を受信し、イベント情報からイベントを識別する。イベント・レコグナイザ320−1は、イベント受信部331とイベント比較部332とを含む。
【0058】
イベント情報は、イベント(例えば、タッチ)又はサブイベント(例えば、タッチの移動)に関する情報を含む。イベント又はサブイベントに依存して、イベント情報は、イベント又はサブイベントの位置等の追加の情報も含む。イベント又はサブイベントがタッチの動きに関係する場合に、イベント情報は、サブイベントの速度及び方向も含んでもよい。一部の実施形態において、イベントは1つの方向から別の方向(例えば、縦長方向から横長方向又はその逆)へのデバイスの回転を含み、イベント情報は、デバイスの現在の(デバイスの姿勢とも呼ばれる)方向に関する対応する情報を含む。
【0059】
イベント比較部332は、イベント情報を(本明細書では「イベント定義」とも呼ばれる)1つ以上の所定のジェスチャ定義と比較し、その比較に基づいて、イベント又はサブイベントを判定するか、若しくはイベント又はサブイベントの状態を判定又は更新する。一部の実施形態において、イベント比較部332は、(上述したように、本明細書では「イベント定義」とも呼ばれる)1つ以上のジェスチャ定義333を含む。ジェスチャ定義333は、例えばジェスチャ1(334−1)及びジェスチャ2(334−2)等であるジェスチャ(例えば、イベント及び/又はサブイベントの所定のシーケンス)の定義を含む。一部の実施形態において、ジェスチャ定義333のサブイベントは、例えばタッチ開始、タッチ終了、タッチ移動、タッチ・キャンセル及び複数のタッチを含む。一例において、ジェスチャ1(334−1)の定義は、表示されたオブジェクトに対するダブルタップである。ダブルタップは、例えばジェスチャの所定のフェーズについての表示オブジェクトへの第1タッチ(タッチ開始)と、ジェスチャの次の所定のフェーズについての第1リフトオフ(タッチ終了)と、ジェスチャの後続する所定のフェーズについての表示オブジェクトへの第2タッチ(タッチ開始)と、ジェスチャの最後の所定のフェーズについての第2リフトオフ(タッチ終了)とを含む。別の例において、ジェスチャ2(334−2)の定義は、表示オブジェクトのドラッグである。例えばドラッグは、表示オブジェクトへのタッチ(又は接触)と、タッチセンサ・ディスプレイ156にわたるタッチの移動と、タッチのリフトオフ(タッチ終了)とを含む。
【0060】
一部の実施形態において、イベント・レコグナイザ320−1はイベント配信335のための情報も含む。イベント配信335のための情報は、対応するイベント・ハンドラ322に対する参照を含む。オプションとして、イベント配信335のための情報は、動作−対象ペア(群)を含む。一部の実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、イベント情報(例えば、動作メッセージ(群))は動作−対象ペア(群)により識別された1つ以上の対象に送信される。他の実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、動作−対象ペアが起動される。
【0061】
一部の実施形態において、ジェスチャ定義333は、個別のユーザインタフェース・オブジェクトに対するジェスチャの定義を含む。一部の実施形態において、イベント比較部332は、どのユーザインタフェース・オブジェクトがサブイベントに関連するかを判定するためにヒット・テストを実行する。例えば、3つのユーザインタフェース・オブジェクトがタッチセンサ・ディスプレイ156に表示されるアプリケーション・ビューにおいて、タッチセンサ・ディスプレイ156でタッチが検出された場合に、イベント比較部332は、もしあるならば、3つのユーザインタフェース・オブジェクトのうちのどれがタッチ(イベント)に関連するかを判定するためにヒット・テストを実行する。各表示オブジェクトが個別のイベント・ハンドラ322に関連するならば、イベント比較部332は、ヒット・テストの結果を使用して、そのイベント・ハンドラ322が起動されるべきかを判定する。例えばイベント比較部332は、ヒット・テストを始動するイベント及びオブジェクトに関連するイベント・ハンドラ322を選択する。
【0062】
一部の実施形態において、個別のジェスチャの定義333は、イベント及び/又はサブイベントのシーケンスがイベント・レコグナイザのイベントのタイプに対応するか否かが判定されるまでイベント情報の配信を遅延させる遅延動作も含む。
【0063】
一連のイベント及び/又はサブイベントがジェスチャ定義333のいずれのイベントとも合致しないことを個別のイベント・レコグナイザ320−1が判定する場合に、個別のイベント・レコグナイザ320−1はイベント失敗状態になり、その後、個別のイベント・レコグナイザ320−1はタッチ・ベースのジェスチャの後続のイベント及び/又はサブイベントを無視する。この状況において、ヒット・ビューに対してアクティブのままである他のイベント・レコグナイザがあるならば、これらのイベント・レコグナイザは実行中のタッチ・ベースのジェスチャのイベント及び/又はサブイベントを追跡及び処理し続ける。
【0064】
一部の実施形態において、個別のイベント・レコグナイザ320−1はイベント・レコグナイザ状態336を含む。イベント・レコグナイザ状態336は、個別のイベント・レコグナイザ320−1の状態を含む。イベント・レコグナイザ状態の例については、図4A〜図4Dを参照して以下にさらに詳細に説明する。
【0065】
一部の実施形態において、イベント・レコグナイザ状態336はレコグナイザ・メタデータ及び属性337−1を含む。一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、A)イベント配信システムが能動的関与イベント・レコグナイザへのイベント及び/又はサブイベント配信をどのように実行すべきかを示す設定可能な属性、フラグ及び/又はリスト、B)イベント・レコグナイザが互いにどのように相互作用するかを示す設定可能な属性、フラグ及び/又はリスト、C)イベント・レコグナイザがイベント情報をどのように受信するかを示す設定可能な属性、フラグ及び/又はリスト、D)イベント・レコグナイザがジェスチャをどのように認識してもよいかを示す設定可能な属性、フラグ及び/又はリスト、E)イベント及び/又はサブイベントがビュー階層の種々のレベルに配信されるかを示す設定可能な属性、フラグ及び/又はリスト、F)対応するイベント・ハンドラ322に対する参照のうちの1つ以上を含む。
【0066】
一部の実施形態において、イベント・レコグナイザ状態336はイベント/タッチ・メタデータ337−2を含む。イベント/タッチ・メタデータ337−2は、検出された個別のイベント/タッチに関するイベント/タッチ情報を含み、ジェスチャ定義333に対応する。イベント/タッチ情報は、個別のイベント/タッチの位置、タイムスタンプ、速度、方向、距離、倍率(又は倍率の変更)及び角度(又は角度の変更)のうちの1つ以上を含む。
【0067】
一部の実施形態において、個別のアプリケーション・ビューは1つ以上のデリゲート321を含む。個別のデリゲート321は、個別のイベント・レコグナイザ320に割り当てられる。これに代えて、個別のイベント・レコグナイザ320は対応するデリゲート321を有するが、デリゲート321は必ずしも実行時に個別のレコグナイザ320に割り当てられる必要はなく、イベント・レコグナイザに対するデリゲートはアプリケーションの実行前に確立されてもよい(例えば、イベント・レコグナイザに対するデリゲートは、アプリケーション・ビューのデリゲート属性により示され、対応するアプリケーション・ビュー316が初期化された場合に確立されてもよい)。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた(又は対応する)デリゲートを有しない。対応するデリゲートがないイベント・レコグナイザは、イベント認識の排他性を統治するデフォルト規則のようなデフォルト規則に従って実行する。一部の実施形態において、いくつかのイベント・レコグナイザは割り当てられた(又は対応する)デリゲートを複数有する。デリゲートは、対応するイベント・レコグナイザの挙動を変更し、複数のイベント・レコグナイザの挙動を調整するためにも使用可能である。以下に説明する一部の実施形態において、デリゲートは、個別のイベント・レコグナイザに割り当てられた場合に、個別のイベント・レコグナイザの挙動の複数の側面を変更する。
【0068】
一部の実施形態において、個別のイベント・レコグナイザ320は、ジェスチャの1つ以上の特定のイベント及び/又はサブイベントが認識された場合に、個別のイベント・レコグナイザ320に関連するイベント・ハンドラ322を起動する。一部の実施形態において、個別のイベント・レコグナイザ320は、イベントに関連するイベント情報をイベント・ハンドラ322に配信する。
【0069】
イベント・ハンドラ322は、起動された場合に、データの作成及び/又は更新と、オブジェクトの作成及び更新と、表示情報の準備及びディスプレイ126又はタッチセンサ・ディスプレイ156に表示するためのその表示情報の送信とのうちの1つ以上を実行する。
【0070】
一部の実施形態において、個別のアプリケーション・ビュー316−2はビュー・メタデータ323を含む。ビュー・メタデータ323は、ビューに関するデータを含む。オプションとして、ビュー・メタデータは、イベント・レコグナイザに対するイベント及び/又はサブイベントの配信に影響を及ぼす以下の属性を含む。
●ビューに対して設定された場合に、ビューだけでなくビュー階層におけるその先祖に関連するイベント・レコグナイザへのイベント及び/又はサブイベント配信を防止する停止属性324−1。
●ビューに対して設定された場合に、そのビューに関連するイベント・レコグナイザへのイベント及び/又はサブイベント配信を防止するが、ビュー階層におけるそのビューの先祖へのイベント及び/又はサブイベント配信を許可するスキップ属性324−2。
●ビューに対して設定された場合に、ビューがヒット・ビューでない限り、ビューに関連するイベント・レコグナイザへのイベント及び/又はサブイベントの配信を防止するヒット以外スキップ属性324−3。上述したように、ヒット・ビュー判定モジュール313は、サブイベントを処理すべき階層における最下位ビューとしてヒット・ビューを識別する。
●他のビュー・メタデータ324−4。
【0071】
一部の実施形態において、ビュー階層内の第1能動的関与ビューは、その第1能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成されうる。この挙動は、スキップ属性324−2を実現できる。スキップ属性がアプリケーション・ビューに対して設定された場合に、個別のサブイベントの配信は、ビュー階層の他の能動的関与ビューに関連するイベント・レコグナイザに対して依然として実行される。
【0072】
これに代えて、ビュー階層内の第1能動的関与ビューは、第1能動的関与ビューがヒット・ビューでない限り、第1能動的関与ビューに関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、条件付きのヒット以外スキップ属性324−3を実現できる。
【0073】
一部の実施形態において、ビュー階層内の第2能動的関与ビューは、第2能動的関与ビューに関連するイベント・レコグナイザ及び第2能動的関与ビューの先祖に関連するイベント・レコグナイザへの個別のサブイベントの配信を防止するように構成される。この挙動は、停止属性324−1を実現できる。
【0074】
タッチセンサ・ディスプレイにおけるユーザ・タッチのイベント処理に関する上記説明は、入力デバイスを有する電子デバイス102又は104を動作させるための他の形式のユーザ入力にも当てはまり、ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるジェスチャを定義するイベント及び/又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、タッチパッドにおけるユーザ移動、タップ、ドラッグ、クロール等、ペンスタイラス入力、デバイスの移動(例えば、回転)、音声命令、検出された眼球運動、バイオメトリック入力及び/又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【0075】
図3Cは、一部の実施形態に係るジェスチャ・レコグナイザ(例えば、イベント処理コンポーネント390)の例示的なクラス及びインスタンスを示すブロック図である。
【0076】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のイベント・レコグナイザ340を有する。一部の実施形態において、個別のイベント・レコグナイザ(例えば、340−2)はイベント・レコグナイザクラスである。個別のイベント・レコグナイザ(例えば、340−2)は、イベント・レコグナイザ固有コード341(例えば、イベント・レコグナイザの動作を定義する命令の集合)と、状態マシン342とを含む。
【0077】
一部の実施形態において、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)のアプリケーション状態317は、イベント・レコグナイザのインスタンスを含む。イベント・レコグナイザの各インスタンスは、状態(例えば、イベント・レコグナイザ状態336)を有するオブジェクトである。個別のイベント・レコグナイザ・インスタンスの「実行」は、対応するイベント・レコグナイザ固有コード(例えば、341)を実行し、イベント・レコグナイザ・インスタンス343の状態336を更新又は維持することにより実現される。イベント・レコグナイザ・インスタンス343の状態336は、イベント・レコグナイザ・インスタンスの状態マシン342の状態338を含む。
【0078】
一部の実施形態において、アプリケーション状態317は、各々がアプリケーションのビューと結び付けられた(「アタッチされた」とも言われる)イベント・レコグナイザに対応する複数のイベント・レコグナイザ・インスタンス343を含む。一部の実施形態において、アプリケーション状態317は個別のイベント・レコグナイザ(例えば、340−2)の複数のインスタンス(例えば、343−1〜343−L)を含む。一部の実施形態において、アプリケーション状態317は、複数のイベント・レコグナイザ(例えば、340−1〜340−R)のインスタンス343を含む。
【0079】
一部の実施形態において、ジェスチャ・レコグナイザの個別のインスタンス343−2はイベント・レコグナイザ状態336を含む。上述したように、イベント・レコグナイザ状態336は、レコグナイザ・メタデータ及び属性337−1とイベント/タッチ・メタデータ337−2とを含む。イベント・レコグナイザ状態336は、ジェスチャ・レコグナイザの個別のインスタンス343−2がアタッチされるビューを示すビュー階層参照(群)337−3も含む。
【0080】
一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、以下を含むか、又は以下の部分集合又は上位集合を含む。
●イベント・レコグナイザに対して設定された場合に、イベント・レコグナイザがジェスチャを認識した時にイベント配信システムが(例外リスト353に列挙された他の任意のイベント・レコグナイザを除く)能動的関与ビューの他の任意のイベント・レコグナイザへのイベント及び/又はサブイベントの配信を停止すべきであることを示す排他性フラグ339。対応する排他性フラグ339により示されるように、イベント又はサブイベントを受信することにより特定のイベント・レコグナイザが排他的状態になる場合に、後続のイベント及び/又はサブイベントは、排他的状態のイベント・レコグナイザ(だけでなく、例外リスト353に列挙された他の任意のイベント・レコグナイザ)にのみ配信される。
●排他性例外リスト353。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態336に含まれる場合に、このリスト353は、個別のイベント・レコグナイザが排他的状態に入った後でもイベント及び/又はサブイベントを受信し続けるイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。例えば、シングルタップ・イベントに対するイベント・レコグナイザが排他的状態になり、現在の関与ビューがダブルタップ・イベントに対するイベント・レコグナイザを含む場合に、リスト353は、シングルタップ・イベントが検出された後でもダブルタップ・イベントが認識されるようにダブルタップ・イベント・レコグナイザを列挙する。従って、排他性例外リスト353は、イベント・レコグナイザがイベント及び/又はサブイベントの共通のシーケンスを共有する相異なるジェスチャを認識することを許可する。例えば、シングルタップ・ジェスチャ認識は、他のイベント・レコグナイザによるダブル又はトリプル・タップジェスチャの後続の認識を排除しない。
●待ちリスト351。個別のイベント・レコグナイザに対するイベント・レコグナイザ状態336に含まれる場合に、このリスト351は、個別のイベント・レコグナイザが個別のイベントを認識できる前にイベント失敗状態又はイベント・キャンセル済状態にならなければならないイベント・レコグナイザがある場合にこれらのレコグナイザの集合を示す。実質的に、列挙されたイベント・レコグナイザは、イベントを認識する優先順位が待ちリスト351を有するイベント・レコグナイザより高い。
●イベント・レコグナイザに対して設定された場合に、イベント及び/又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されるまで、イベント・レコグナイザが(タッチ開始サブイベント又はフィンガーダウン・サブイベント及び後続のイベントを含む)イベント及び/又はサブイベントをイベント・レコグナイザの個別のヒット・ビューに送信するのを遅延させる遅延タッチ開始済フラグ352。このフラグは、ジェスチャが認識される場合にヒット・ビューがイベント及び/又はサブイベントの何れかを参照するのを防止するために使用されうる。イベント・レコグナイザがジェスチャを認識できない場合に、タッチ開始済サブイベント(及び後続のタッチ終了サブイベント)はヒット・ビューに配信されうる。一例において、そのようなサブイベントをヒット・ビューに配信することにより、ユーザインタフェースは、オブジェクトに関連する動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
●イベント・レコグナイザに対して設定された場合に、サブイベントのシーケンスがこのイベント・レコグナイザのイベントのタイプに対応しないと判定されるまで、イベント・レコグナイザがサブイベント(例えば、タッチ終了サブイベント)をイベント・レコグナイザの個別のヒット・ビュー又はレベルに送信するのを遅延させる遅延タッチ終了フラグ363。これは、ジェスチャが後で認識される場合にヒット・ビューがタッチ終了サブイベントに作用するのを防止するために使用されうる。タッチ終了サブイベントが送信されない限り、キャンセルされたタッチはヒット・ビュー又はレベルに送信されうる。イベントが認識されるならば、アプリケーションによる対応する動作が実行され、タッチ終了サブイベントはヒット・ビュー又はレベルに配信される。
●イベント・レコグナイザに対して設定された場合に、イベント及び/又はサブイベントのシーケンスがこのイベント・レコグナイザのジェスチャのタイプに対応しないと判定されている場合、イベント・レコグナイザにタッチ又は入力のキャンセルをイベント・レコグナイザの個別のヒット・ビューに送信させるタッチ・キャンセル・フラグ364。ヒット・ビューに送信されたタッチ又は入力のキャンセルは、先のイベント及び/又はサブイベント(例えば、タッチ開始済サブイベント)がキャンセルされたことを示す。タッチ又は入力のキャンセルにより、イベント・レコグナイザの状態は(図4Bの)イベント・キャンセル済状態418に入る。
【0081】
一部の実施形態において、1つ以上のイベント・レコグナイザは、イベント・レコグナイザがイベントを認識する後までサブイベントのシーケンスのうち1つ以上のサブイベントを配信することを遅延するように適合されうる。この挙動は遅延イベントを反映する。例えば、複数のタップ・ジェスチャが可能であるビューのシングルタップ・ジェスチャを検討する。この場合に、タップ・イベントは「タップ+遅延」レコグナイザになる。実質的に、イベント・レコグナイザがこの挙動を実現する場合に、イベント・レコグナイザは、サブイベントのシーケンスが実際にそのイベント定義に対応することが確実になるまでイベント認識を遅延させる。この挙動は、キャンセルされたイベントに受信者ビューが適切に応答できない場合に適切でありうる。一部の実施形態において、イベント・レコグナイザは、サブイベントのシーケンスがそのイベント定義に対応しないことをイベント・レコグナイザが確信するまでイベント認識状態を個別の能動的関与ビューに更新することを遅延させる。遅延タッチ開始済フラグ352、遅延タッチ終了フラグ363及びタッチ・キャンセル・フラグ364は、サブイベント配信技術だけでなく、イベント・レコグナイザ及びビュー状態情報更新を特定の要望に合わせて調整するために提供される。
【0082】
一部の実施形態において、レコグナイザ・メタデータ及び属性337−1は、以下を含むか、若しくは以下の部分集合又は上位集合を含む。
●個別のイベント・レコグナイザ・インスタンス(例えば、343−2)に対する状態マシン(例えば、342)の状態を示す状態マシンの状態/フェーズ338。状態マシンの状態/フェーズ338は、以下に説明するように「イベント可能」、「イベント認識済」及び「イベント失敗」等の種々の状態値を有しうる。これに代えて又はこれに加えて、状態マシンの状態/フェーズ338は、タッチ・データ構造が以前のタッチ・データ構造により参照されていない新しいタッチを定義することを示す「タッチ・フェーズ開始済」等の種々のフェーズ値を有しうる。「タッチ・フェーズ移動済」値は、定義されているタッチが以前の位置から移動したことを示す。「タッチ・フェーズ静止」値は、タッチが同一の位置に留まっていることを示しうる。「タッチ・フェーズ終了済」値は、タッチが終了したこと(例えば、ユーザがマルチタッチ・ディスプレイの面から自身の指を離したこと)を示しうる。「タッチ・フェーズ・キャンセル済」値は、タッチがデバイスによりキャンセルされたことを示す。キャンセルされたタッチは、必ずしもユーザにより終了されたわけではないタッチであるが、デバイスはそれを無視することを判定したものである。例えばデバイスは、タッチが意図せずに生成されている(すなわち、ポータブル・マルチタッチ対応デバイスをポケットに入れた結果)と判定し、そのためタッチを無視できる。状態マシンの状態/フェーズ338の各値は本明細書では(「ジェスチャ・レコグナイザ状態値」と呼ばれる)整数であってもよい。
●ジェスチャ又はジェスチャの一部としてイベント又はタッチを認識することに応答して個別のイベント・レコグナイザ・インスタンスが識別された動作メッセージを送信する先の対象を各ペアが識別する動作−対象ペア(群)345。
●デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられた場合の対応するデリゲートに対する参照であるデリゲート346。デリゲートが個別のイベント・レコグナイザ・インスタンスに割り当てられない場合に、デリゲート346はヌル値を含む。
●個別のイベント・レコグナイザ・インスタンスが有効にされるかを示す有効属性347。一部の実施形態において、個別のイベント・レコグナイザ・インスタンスが有効でない(例えば、無効である)場合に、個別のイベント・レコグナイザ・インスタンスはイベント又はタッチを処理しない。
【0083】
一部の実施形態において、例外リスト353はまた、非排他的なイベント・レコグナイザにより使用されうる。特に非排他的イベント・レコグナイザがイベント又はサブイベントを認識した場合に、後続のイベント及び/又はサブイベントは、イベント又はサブイベントを認識したイベント・レコグナイザの例外リスト353に列挙された排他的イベント・レコグナイザを除く現在アクティブなビューに関連する排他的イベント・レコグナイザに配信されない。
【0084】
一部の実施形態において、イベント・レコグナイザは、不要なイベント及び/又はサブイベントがヒット・ビューに配信されるのを防止するために遅延タッチ終了フラグ363と共にタッチ・キャンセル・フラグ364を利用するように構成されうる。例えば、シングルタップ・ジェスチャの定義とダブルタップ・ジェスチャの前半とは同一である。シングルタップ・イベント・レコグナイザがシングルタップを正常に認識すると、不要な動作が行われうる。遅延タッチ終了フラグが設定されたならば、シングルタップ・イベントが認識されるまで、シングルタップ・イベント・レコグナイザはサブイベントをヒット・ビューに送信しないようにされる。また、シングルタップ・イベント・レコグナイザの待ちリストがダブルタップ・イベント・レコグナイザを識別してもよく、これによって、ダブルタップ・イベント・レコグナイザがイベント不可能状態になるまで、シングルタップ・イベント・レコグナイザがシングルタップを認識しないようにする。待ちリストを使用することにより、ダブルタップ・ジェスチャが実行される場合にシングルタップに関連する動作の実行を回避する。その代わり、ダブルタップ・イベントの認識に応答して、ダブルタップに関連する動作のみが実行される。
【0085】
タッチセンサ面におけるユーザ・タッチの形式を特に参照すると、上述したように、タッチ及びユーザ・ジェスチャは瞬時である必要がない動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含みうる。しかし、タッチ・データ構造は、特定の時刻のタッチの状態(すなわち、より一般的には任意の入力ソースの状態)を定義する。従って、タッチ・データ構造に格納された値はシングルタッチの間に変更されてもよく、それにより異なる時点のシングルタッチの状態がアプリケーションに伝達される。
【0086】
各タッチ・データ構造は種々のエントリを含みうる。一部の実施形態において、タッチ・データ構造は、以下のような、若しくは以下の部分集合又は上位集合のようなイベント/タッチ・メタデータ337−2のタッチ固有エントリに少なくとも対応するデータを含みうる。
●(ビューがインスタンス化されたため)タッチ・データ構造が特定のビューに対する第1タッチを定義するかを示す「ビューに対する第1タッチ」エントリ348。
●タッチ・データ構造が関連する特定の時刻(例えば、タッチの時刻)を示す「タイムスタンプ」情報を含む「タッチ毎の情報」エントリ349。オプションとして、「タッチ毎の情報」エントリ349は、対応するタッチの位置等の他の情報を含む。
●最初のタッチの位置で連続して実行されたタップ数を示すオプションの「タップ・カウント」エントリ350。タップは、特定の位置でのタッチセンシティブパネルへの迅速な指の押下及び持ち上げとして定義されうる。指がパネルの同一の位置で迅速に連続して再度押下及び解放されるならば、複数の連続したタップが発生しうる。イベント配信システム130は、タップをカウントし、「タップ・カウント」エントリ350を介してこの情報をアプリケーションに中継できる。同一の位置における複数のタップは、タッチ対応インタフェースに対する有用で覚えやすいコマンドとみなされることがある。従って、タップをカウントすることにより、イベント配信システム130は、アプリケーションからの何らかのデータ処理を再度軽減できる。
【0087】
従って、各タッチ・データ構造は、特定の時刻に個別のタッチ(又は他の入力ソース)により発生していること(例えば、タッチが静止しているか、移動しているか等)だけでなく、タッチに関連する他の情報(位置等)を定義できる。従って、各タッチ・データ構造は、特定の瞬間の特定のタッチの状態を定義できる。同一の時刻を参照する1つ以上のタッチ・データ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義できるタッチ・イベント・データ構造に追加されうる(上述したように、いくつかのタッチ・データ構造は、終了して、もはや受信されていないタッチも参照してもよい)。複数のタッチ・イベント・データ構造は、ビューで発生しているタッチを記述する連続した情報をソフトウェアに提供するために、時間の経過と共にビューを実現するソフトウェアに送信されうる。
【0088】
オプションとしてマルチタッチ・ジェスチャを含む複雑なタッチ・ベースのジェスチャを処理する機能は、種々のソフトウェア・アプリケーションをさらに複雑にしうる。いくつかの例において、このような追加の複雑さは、高度な所望のインタフェース機能を実現するのに必要でありうる。例えばゲームは、同時に複数のボタンを押下したり、若しくは加速度計データをタッチセンサ面におけるタッチと組み合わせたりすることを必要とすることが多いので、種々のビューで発生する複数の同時のタッチを処理する機能を必要としうる。しかし、いくつかのより単純なアプリケーション及び/又はビューは、高度なインタフェース機能を要求する必要がない。例えば単純なソフトボタン(すなわち、タッチセンサ・ディスプレイに表示されるボタン)は、マルチタッチ機能ではなくシングルタッチで十分に動作しうる。これらの例において、基礎となるOSは、シングルタッチ(例えば、ソフトボタンへのシングルタッチ又はシングルタップ)のみで動作可能であることが意図されるビューに関連するソフトウェア・コンポーネントに不必要な又は過剰なタッチ・データ(例えば、マルチタッチ・データ)を送信しうる。ソフトウェア・コンポーネントは、このデータを処理する必要がありうるので、シングルタッチのみが関連するビューに関連するとしても、複数のタッチを処理するソフトウェア・アプリケーションの全ての複雑さを特徴とする必要がありうる。従来、マウスインタフェース環境(すなわち、種々のボタン等)でプログラムするのが容易であったソフトウェア・コンポーネントがマルチタッチ環境でかなり複雑になりうるので、これによりデバイスに対してソフトウェアを開発するコストが増加しうる。
【0089】
複雑なタッチ・ベースのジェスチャを認識する際の複雑さを軽減するために、デリゲートは、一部の実施形態に従ってイベント・レコグナイザの挙動を制御するために使用されうる。以下に説明するように、デリゲートは、例えば対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)がイベント(例えば、タッチ)情報を受信できるか、対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)が状態マシンの初期状態(例えば、イベント可能状態)から別の状態に遷移できるか、及び/又は他のイベント・レコグナイザ(群)(又はジェスチャ・レコグナイザ(群))がイベントを認識することを阻止せずに又はイベントを認識する他のイベント・レコグナイザ(群)(又はジェスチャ・レコグナイザ(群))により阻止されずに、対応するイベント・レコグナイザ(又はジェスチャ・レコグナイザ)がイベント(例えば、タッチ)を対応するジェスチャとして同時に認識できるかを判定できる。
【0090】
しかし、タッチセンサ面に対するユーザ・タッチの評価及び処理の複雑さに関する上記説明は、電子デバイス102又は104を動作させるための全ての形式のユーザ入力にも当てはまる。ユーザ入力の全てがタッチ画面上で開始されるわけではなく、例えば認識されるイベントを定義するイベント及び/又はサブイベントに対応する入力として利用されうる単一又は複数のキーボード押下又は保持を伴うか又は伴わないマウス移動及びマウスボタン押下、デバイスの回転又は他の移動、タップ、ドラッグ、スクロール等のユーザの移動、ペンスタイラスの入力、音声命令、検出された眼球運動、バイオメトリック入力、検出されたユーザの生理学的変化及び/又はこれらの任意の組み合わせを調整することにも当てはまることが理解される。
【0091】
図4A〜図4Dは、一部の実施形態に係る例示的な状態マシンのためのフローチャートである。ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザと連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは典型的に、所定の期間内に発生する簡単なジェスチャ(例えば、タップ又はスワイプ・ジェスチャ)を認識する際に有用であり、より本質的には、ジェスチャ認識の際に1つの動作メッセージのみ又は動作メッセージの1つの集合のみがアプリケーションに配信される必要があるジェスチャを認識するためのものである。連続ジェスチャ・レコグナイザは、タッチの移動を含む(及び従ってタッチ位置の追跡を必要とする)ジェスチャ(例えば、パン、ピンチ又は回転ジェスチャ)を認識する際に有用であり、より本質的には、動作メッセージのシーケンスがジェスチャの間にアプリケーションに配信される必要があるジェスチャを認識するためのものである。一部の実施形態において、離散イベント・レコグナイザ状態マシン400及び連続イベント・レコグナイザ状態マシン402は異なる状態を有する。
【0092】
図4Aは、一部の実施形態に係る3つの状態を含む離散イベント・レコグナイザ状態マシン400を示す。受信したイベント及び/又はサブイベントに基づいてイベント・レコグナイザ状態マシン342の状態遷移を管理することにより、イベント・レコグナイザはイベント定義を効果的に表現する。例えば、タップ・ジェスチャは、2つのサブイベント又は場合によっては3つのサブイベントのシーケンスにより効果的に定義されうる。第1に、タッチが検出されるべきであり、これはサブイベント1となる。例えば、タッチ・サブイベントは、イベント・レコグナイザ状態マシン342を有するイベント・レコグナイザを含むビューにおいてユーザの指がタッチセンサ面にタッチしていることでありうる。第2に、タッチがどの所与の方向にも実質的に移動せず(例えば、タッチ位置の任意の移動が所定の閾値よりも小さく、これは例えばディスプレイにおいて距離(例えば、5mm)又は画素数(例えば、5画素)として測定されうる)、遅延が十分に短いオプションの測定済遅延はサブイベント2である。最後に、タッチ終了(例えば、タッチセンサ面からユーザの指を離すこと)はサブイベント3である。これらのサブイベントを受信することに基づいて状態間を遷移するようにイベント・レコグナイザ状態マシン342をコーディングすることにより、イベント・レコグナイザ状態マシン342は、タップ・ジェスチャイベント定義を効果的に表現する。離散イベント・レコグナイザ状態マシン400は、上述したタップ・ジェスチャを認識するように構成されたイベント・レコグナイザ状態マシン342の例示的な実現例である。
【0093】
イベントのタイプに関係なく、(離散イベント・レコグナイザ状態マシン400として実現されたイベント・レコグナイザ状態マシンを含む)イベント・レコグナイザ状態マシン342は、イベント可能状態410で始まり、これはイベント・レコグナイザ状態マシンの初期状態を示す。イベント・レコグナイザ状態マシン342は、受信されるイベント及び/又はサブイベントに依存して残りのいずれかの状態に進みうる。
【0094】
イベント可能状態410から始まって、ジェスチャ定義の第1イベント又はサブイベントでないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント失敗状態430に遷移する。
【0095】
イベント可能状態410から始まって、自身がジェスチャに対するジェスチャ定義を含むイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント認識済状態420に遷移する。しかし、受信したイベント又はサブイベントがジェスチャに対するジェスチャ定義を含むとしても、離散イベント・レコグナイザ状態マシン400は対応するイベント・レコグナイザのメタデータ(例えば、属性)、対応するデリゲートにより判定された1つ以上の値及び/又はアプリケーション状態に従ってイベント失敗状態430に遷移しうる。
【0096】
一部の実施形態において、イベント認識済状態420に遷移した後、対応するイベント・レコグナイザは、遅延フラグ(例えば、遅延タッチ終了フラグ363)をチェックする(441)。遅延フラグがオンであるならば(441においてYES)、対応するイベント・レコグナイザは、遅延フラグがオフにされるまでイベント情報の配信を遅延させる(442)。
【0097】
一部の実施形態において、対応するイベント・レコグナイザは待ちリスト351を含み、対応するイベント・レコグナイザは所定の状態に到達するために待ちリスト351に列挙されたイベント・レコグナイザを待つ。例えば、ビューがシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを含む場合に、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザが失敗するのを待つように構成されうる。実際には、シングルタップ・ジェスチャ・レコグナイザがイベント認識済状態420に遷移するには、ダブルタップ・ジェスチャ・レコグナイザがイベントを認識することに失敗したことが必要である(又はそれを条件としている)。その結果、タップ・イベントがある場合に、タップ・イベントがマルチタップ・ジェスチャの一部でない限り、シングルタップ・ジェスチャ・レコグナイザはタップ・イベントを認識する。
【0098】
遅延及び待ち(442)の後、存在するならば、対応するジェスチャ・レコグナイザはイベントをアプリケーションに配信する(443)。一部の実施形態において、イベントは動作メッセージの形式で配信される。一部の実施形態において、動作メッセージは動作−対象ペア(群)345に従って配信される。一部の実施形態において、対応するジェスチャ・レコグナイザは動作−対象ペア(群)345を起動する。
【0099】
図4Bは、一部の実施形態に係る6つの状態を含む連続イベント・レコグナイザ状態マシン402を示す。
【0100】
上述したように、連続イベント・レコグナイザ状態マシン402は、イベント可能状態410から始まる。
【0101】
イベント可能状態410から始まって、ジェスチャ定義のイベント及び/又はサブイベントの開始シーケンスの一部でないイベント又はサブイベントが受信されたならば、離散イベント・レコグナイザ状態マシン400はイベント失敗状態430に遷移する。
【0102】
イベント可能状態410から始まって、所与のジェスチャ定義のイベント(群)及び/又はサブイベント(群)の開始シーケンスの一部であるイベント又はサブイベントが受信されたならば、連続イベント・レコグナイザ状態マシン402はイベント開始済状態412に遷移する。離散ジェスチャ・レコグナイザ400と同様に、受信したイベント又はサブイベントがジェスチャ定義のイベント(群)及び/又はサブイベント(群)の開始シーケンスの一部を含むとしても、連続イベント・レコグナイザ状態マシン402は、対応するイベント・レコグナイザのメタデータ(例えば、属性)、対応するデリゲートにより判定された1つ以上の値及び/又はアプリケーション状態に従ってイベント失敗状態430に遷移しうる。
【0103】
イベント開始済状態412から、受信された次のイベント又はサブイベントが中間イベント又はサブイベントであるが所与のジェスチャ定義の最後のイベント又はサブイベントでないならば、連続イベント・レコグナイザ状態マシン402はイベント変更済状態414に遷移して留まる。連続イベント・レコグナイザ状態マシン402は、受信したイベント及び/又はサブイベントのシーケンスがジェスチャ定義の一部であり続ける限り、イベント変更済状態414に留まりうる。連続イベント・レコグナイザ状態マシン402は、いずれかの時点でイベント変更済状態414であり、ジェスチャ定義の一部でないイベント又はサブイベントを受信したならば、イベント失敗状態430に遷移し、それにより、(存在する場合に)現在のイベントはこのイベント・レコグナイザ(すなわち、連続イベント・レコグナイザ状態マシン402に対応するイベント・レコグナイザ)に対応するイベントのタイプでないことを判定する。一方、連続イベント・レコグナイザ状態マシン402は、イベント開始済状態412又はイベント変更済状態414であり、ジェスチャ定義の最後のイベント又はサブイベントを受信したならば、イベント終了済状態416に遷移し、それによって、正常なイベント認識を完了する。
【0104】
一部の実施形態において、各ジェスチャ・レコグナイザ状態はジェスチャ・レコグナイザ状態値を有する。一部の実施形態において、(離散イベント・レコグナイザ状態マシン400に対する)イベント認識済状態420及び(連続イベント・レコグナイザ状態マシン402に対する)イベント終了済状態416は、1つのタイプのジェスチャ・レコグナイザによるジェスチャの認識に応答するように構成されたソフトウェア・コンポーネントが他のタイプのジェスチャ・レコグナイザにも応答できるように、同一のジェスチャ・レコグナイザ状態値を有する。
【0105】
イベント開始済状態412又はイベント変更済状態414の間、(例えば、着呼等のオペレーティングシステム118又は制御アプリケーション124において事前に定義された)所定の割り込みイベントが発生した場合に、連続イベント・レコグナイザ状態マシン402はイベント・キャンセル済状態418に遷移する。
【0106】
ジェスチャ・レコグナイザのタイプに関わらず、各ジェスチャ・レコグナイザ(例えば、343)は、対応するイベント・レコグナイザ状態マシン(例えば、342)がイベント可能状態410に戻るように再設定されうる。
【0107】
図4C及び図4Dは、一部の実施形態に係る状態遷移におけるデリゲートの役割を示す。図4C及び図4Dにおいて、1つ以上のデリゲートによる動作(又は行われる決定)は、陰影付きのボックスにより示される(例えば、450〜456)。
【0108】
図4Cは、一部の実施形態に係る離散イベント・レコグナイザ状態マシン400の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン400は、対応するデリゲートを有する特定の離散イベント・レコグナイザに対応する。
【0109】
イベント可能状態410から始まって、イベント又はサブイベントが検出されたならば、イベント・レコグナイザに対応するデリゲートは、イベント・レコグナイザがイベント又はサブイベントを受信すべきか(450)を決定する。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止する値をデリゲートが返したならば、対応するイベント・レコグナイザは、イベント又はサブイベントを受信しない(か、イベント又はサブイベントを無視する)。その結果、対応するイベント・レコグナイザはイベント可能状態410に留まる。対応するイベント・レコグナイザがイベント又はサブイベントを受信することを防止するデリゲートが存在しないならば、対応するイベント・レコグナイザのデフォルトの挙動は、イベント又はサブイベントを受信することである。
【0110】
なお、イベント・レコグナイザの集合のデリゲートによる「受信すべきか」の動作450は、どのイベント・レコグナイザがタッチセンサ・ディスプレイ又はタッチセンサ面に対するどのタッチを受信するかを判定するために使用されうる。例えば、個別に且つ同時に2つのオブジェクトの位置を変更するため又は2つの異なるオブジェクトを選択するためにユーザが2つのタッチを使用できるようにするビューにおいて、2つのイベント・レコグナイザのデリゲートは、1つのイベント・レコグナイザが2つのタッチのうちの第1タッチのみを受信することを許可し、第2イベント・レコグナイザが2つのタッチのうちの第2タッチのみを受信することを許可するように構成されうる。従って、2つのタッチの各々に関する全ての情報は、対応するデリゲートによりそのタッチを受信することを許可されたイベント・レコグナイザにのみへ宛てられる。かなり複雑なマルチタッチ入力は、どのタッチがどのイベント・レコグナイザにより処理されるかを判定する複数のイベント・レコグナイザ及び対応するデリゲートを使用することにより認識及び処理されうる。
【0111】
イベント・レコグナイザがイベント又はサブイベントを受信することを許可されたならば、イベント・レコグナイザに対応するデリゲート(又は制御アプリケーション124又はオペレーティングシステム118)は、イベント・レコグナイザによるイベント又はサブイベントの認識が、イベントを既に認識している別のイベント・レコグナイザにより阻止される(451)。この阻止の初期レベルは、デフォルトの排他性規則に基づき、デリゲートにより上書きされうる。イベント又はサブイベントの認識が阻止されたならば、対応するデリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、イベント・レコグナイザによるイベントの同時認識がデリゲートにより判定された1つ以上の値に従って許可されるか(452)も決定する。例えば、イベント・レコグナイザがイベントを最初に認識したイベント・レコグナイザの排他性例外リスト353にあるならば、デリゲートは、両方のイベント・レコグナイザによる同時認識を許可する。別の例において、イベント・レコグナイザの排他性フラグ339が設定されないならば、デリゲートは両方のイベント・レコグナイザによる同時認識を許可する。同時認識が許可されないならば、イベント・レコグナイザはイベント失敗状態430に遷移する。
【0112】
対応するイベント・レコグナイザがイベント又はサブイベントを認識することを阻止されないならば(451においてNO)、若しくは同時認識が許可されるならば(452においてYES)、対応するイベント・レコグナイザは、イベント又はサブイベントが、対応するジェスチャ定義に合致するか(453)を判定する。イベント又はサブイベントが対応するジェスチャ定義に合致しないならば(453においてNO)、対応するジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0113】
イベント又はサブイベントが対応するジェスチャ定義に合致するならば(453においてYES)、対応するデリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、デリゲートにより判定された1つ以上の値に従ってイベント可能状態410から遷移できるか(「開始すべきか」454)を決定する。イベント・レコグナイザがイベント可能状態410から遷移することをデリゲートにより許可されないならば(454においてNO)、対応するイベント・レコグナイザはイベント失敗状態430になる。イベント・レコグナイザがイベント可能状態410から遷移することを許可されるならば(454においてYES)、対応するイベント・レコグナイザはイベント認識済状態420に遷移する。
【0114】
対応するイベント・レコグナイザがイベント認識済状態420に遷移する場合に、対応するイベント・レコグナイザ(又はオペレーティングシステム118又は制御アプリケーション124)は、他のイベント・レコグナイザによるイベント又はサブイベントの認識を許可するか(455)も決定する。一部の実施形態において、イベント・レコグナイザのうちの少なくとも1つのイベント・レコグナイザのデリゲート(又はアプリケーション)が同時認識を許可するように属性を設定しない限り、デフォルトは他の全てのイベント・レコグナイザが同一のイベントを認識することを防止することである。イベント又はサブイベントを認識したイベント・レコグナイザに対応するデリゲートが、他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可すること(455においてYES)を判定したならば、デリゲート(又はオペレーティングシステム118又は制御アプリケーション124)は、イベント又はサブイベントを同時に認識できるように他のイベント・レコグナイザの属性を設定する(456)。他のイベント・レコグナイザがイベント又はサブイベントを認識することをデリゲートが許可しないならば、他のイベント・レコグナイザは、イベント又はサブイベントを認識することを防止される。
【0115】
一部の実施形態において、個別のイベント・レコグナイザがイベント又はサブイベントを認識しないようにする前に、そのイベント・レコグナイザのデリゲートは、イベント又はサブイベントの同時認識を許可するかを確認するために呼び出される(452を参照)。これらの実施形態において、同時認識は、イベントを認識する第1イベント・レコグナイザのデリゲート又は第2イベント・レコグナイザのデリゲートの何れかにより可能になりうる。図4Cの452及び455により示されるように、これらの実施形態において、同時認識を許可するかに関する決定は、イベントが少なくとも1つのイベント・レコグナイザのイベント定義に合致する場合にのみ行われる。
【0116】
上述したデリゲート動作は、アプリケーション・ビュー(又は同時に表示されたビューの集合)により使用されたイベント・レコグナイザの集合に対するデリゲートにおいて実装される場合に、イベント・レコグナイザの相互作用をカスタマイズするために使用されうる。デリゲートは、デフォルトの排他性規則に対する例外を実装でき、その例外以外では、1つのイベント・レコグナイザのみが受信された同一のイベント(群)に基づいてジェスチャを認識することを許可する。デフォルトの排他性規則に対する例外を実装し、それにより互換性のあるイベント・レコグナイザによる同時イベント認識を許可するデリゲートのユーザは、ソフトウェア・アプリケーションにおける多くの有用な機能の実装を容易にする。イベント・レコグナイザの挙動を変更及び制御するためにデリゲートを使用することにより、相互に互換性のあるジェスチャの相互に排他的な集合等の複雑な関係のコンパクト表現及び実装が可能になる。
【0117】
図4Dは、一部の実施形態に係る連続イベント・レコグナイザ状態マシン402の状態遷移におけるデリゲートの役割を示す。以下に説明する例において、状態マシン402は、対応するデリゲートを有する特定の連続イベント・レコグナイザに対応する。図4Cに示され、図4Cを参照して上述された全てのデリゲートの動作は、対応するデリゲートを有する連続イベント・レコグナイザに等しく適用可能であり、それ故、図4Dに示すデリゲートの動作は図4Cと同一の参照符号を有する。唯一の相違点は、状態マシンにおける1つの状態の名前が状態マシン400の「イベント認識済」420から状態マシン402の「イベント開始済」412に変更されたことである。
【0118】
対応するイベント・レコグナイザは、上述したようにイベント開始済状態412から他の状態に遷移する。簡潔にするために、イベント変更済状態414からイベント失敗状態416への遷移は示さない。
【0119】
以下の表は、上述したイベント・レコグナイザの状態に関する例示的なサブイベント・シーケンス(例えば、シングルタップ)の処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に受信し認識するように構成される。同時認識は、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲート又は第2タップ・ジェスチャ・レコグナイザに割り当てられたデリゲートにより許可されうる。
【0120】
サブイベント情報の配信が始まる前(シーケンス番号0)、両方のジェスチャ・レコグナイザはイベント可能状態410である。フィンガーダウン・サブイベントを検出し(シーケンス番号1)、遅延を測定した(シーケンス番号2)後であっても、両方のジェスチャ・レコグナイザはイベント可能状態410に留まる。フィンガーリフトオフを検出したこと(シーケンス番号3)に応答して、シングルタップ・ジェスチャ・レコグナイザはイベント認識済状態420に遷移する。追加の遅延を検出した後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント認識済状態420に留まり、リセットされた場合に、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態410に戻る。一方、測定された追加の遅延が所定の期間(例えば、ダブルタップ・ジェスチャ・レコグナイザは第2フィンガーダウン・サブイベントを予想する期間)を超える場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0121】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されない。
【0122】
シングルタップ・ジェスチャ・レコグナイザは、サブイベントを受信することをデリゲートにより許可されないため、イベント可能状態410に留まる。測定された第2遅延が所定の閾値を超えた場合(シーケンス番号4)に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0123】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可されない。
【0124】
上述したのと同様に、フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移する。一般に、サブイベント・シーケンスを認識する第1ジェスチャ・レコグナイザは、サブイベント・シーケンスをまだ認識していない他のジェスチャ・レコグナイザがサブイベント・シーケンスを認識するのを阻止する。同時認識が許可されない限り、阻止されたジェスチャ・レコグナイザはイベント失敗状態430に遷移する。この場合、同時認識が許可されないので、シングルタップ・ジェスチャ・レコグナイザが(シーケンス番号3において)サブイベント・シーケンスを認識した場合に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移し、リセットされるまでその状態に留まる。
【0125】
以下の表は、1つのジェスチャ・レコグナイザの挙動がデリゲートにより変更され、2つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、開始すること(すなわち、イベント可能状態410から遷移すること)を許可されない。
【0126】
フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移しようとする。しかし、シングルタップ・ジェスチャ・レコグナイザに割り当てられたデリゲートはイベント認識済状態420への状態遷移を許可せず、その結果、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。測定された遅延が所定の閾値を超えた場合(シーケンス番号4)に、ダブルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。
【0127】
以下の表は、1つのジェスチャ・レコグナイザの挙動が変更され、2つのジェスチャ・レコグナイザの動作が一方又は両方のレコグナイザのデリゲートにより行われた動作に従って調整された場合の例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスはシングルタップを含み、ビューは2つのタップ・ジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びダブルタップ・ジェスチャ・レコグナイザを有する。この例においても、シングルタップ・ジェスチャ・レコグナイザは、ダブルタップ・ジェスチャ・レコグナイザの失敗を待つ(又は必要とする)。
【0128】
フィンガーリフトオフの検出(シーケンス番号3)の後、シングルタップ・ジェスチャ・レコグナイザは、イベント可能状態410からイベント認識済状態420に遷移しようとする。しかし、「待ち」要件又は(ダブルタップ・ジェスチャ・レコグナイザが失敗するという)失敗要件に起因して、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態420への遷移を遅延させる。測定された第2遅延が所定の閾値を超える(シーケンス番号4)ことからダブルタップ・ジェスチャ・レコグナイザが失敗した場合に、シングルタップ・ジェスチャ・レコグナイザは、イベント認識済状態420に遷移する。「待ち」要件及び/又は失敗要件は、デリゲートを使用して実装されてもよく、ジェスチャ・レコグナイザにおいて実装されてもよい。
【0129】
以下の表は、例示的なサブイベント・シーケンスの処理を表形式で提示する。この例において、サブイベント・シーケンスは、複数の中間サブイベントを含むパン・ジェスチャを含み、ビューは2つのジェスチャ・レコグナイザ、すなわちシングルタップ・ジェスチャ・レコグナイザ及びパン・ジェスチャ・レコグナイザを有する。この例においても、両方のジェスチャ・レコグナイザは、サブイベント・シーケンスを同時に認識することを許可される。
【0130】
サブイベント情報の配信が始まる前(シーケンス番号0)、両方のジェスチャ・レコグナイザはイベント可能状態410である。フィンガーダウン・サブイベントを検出し(シーケンス番号1)、遅延を測定した(シーケンス番号2)後であっても、シングルタップ・ジェスチャ・レコグナイザはイベント可能状態410に留まるが、その一方で、パン・ジェスチャ・レコグナイザはイベント開始済状態412に遷移する。指の移動の検出(シーケンス番号3)に応答して、サブイベントがシングルタップに対するジェスチャ定義に合致しないので、シングルタップ・ジェスチャ・レコグナイザはイベント失敗状態430に遷移する。その後、シングルタップ・ジェスチャ・レコグナイザは、リセットされるまでイベント失敗状態430に留まる。しかし、パン・ジェスチャ・レコグナイザは、指の移動の検出(シーケンス番号4)に応答してイベント変更済状態414に遷移し、一部の実施形態において、指の接触の新しい位置を含む動作メッセージ(群)を送信する。追加の指の移動を検出した(シーケンス番号4及び5)後、パン・ジェスチャ・レコグナイザはイベント変更済状態414に留まるが、その一方で、指の移動を検出する度に動作メッセージ(群)を送信する。フィンガーリフトオフが検出された(シーケンス番号6)場合に、パン・ジェスチャ・レコグナイザはイベント終了済状態416に遷移する。
【0131】
イベント情報のフロー及びイベント・レコグナイザ間の相互作用を考慮すると、図5Aは、一部の実施形態に係るイベント情報のフローを示すブロック図である。(例えば、オペレーティングシステム118又は制御アプリケーション124における)イベント・ディスパッチャ・モジュール315はイベント情報を受信し、そのイベント情報をアプリケーション(例えば、132−1)に送信する。一部の実施形態において、アプリケーション132−1は、ビュー階層506の複数のビュー(例えば、ビュー316に対応する508、510及び512)と、複数のビューにおける複数のジェスチャ・レコグナイザ(516−1〜516−6)とを含む。アプリケーション132−1は、対象−動作ペア(例えば、522−1、522−2及び522−3)における対象値に対応する1つ以上のイベント・ハンドラ520も含む。イベント・ディスパッチャ・モジュール315は、ヒット・ビュー判定モジュール313からヒット・ビュー情報を受信し、ヒット・ビュー(例えば、512)又はヒット・ビュー(例えば、512)にアタッチされたイベント・レコグナイザ(群)にイベント情報を送信する。一部の実施形態において、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの部分集合のみがイベント情報(又はタッチ情報)を受信することを許可される(又は受信するように構成される)。イベント情報を受信することを許可されたこれらのジェスチャ・レコグナイザは、本明細書において「受信ジェスチャ・レコグナイザ」と呼ばれる。図5Aにおいて、ジェスチャ・レコグナイザ516−1及び516−2は、受信ジェスチャ・レコグナイザ514の集合内にある。その結果、イベント・ディスパッチャ・モジュール315は、受信ジェスチャ・レコグナイザの集合内のジェスチャ・レコグナイザ516−1及び516−2の両方にイベント情報を送信する。
【0132】
一部の実施形態において、ジェスチャ・レコグナイザは、他方のジェスチャ・レコグナイザがイベント又はサブイベントを対応するジェスチャとして認識することを阻止又は防止してもよい。この例において、ジェスチャ・レコグナイザ1(516−1)は、ジェスチャ・レコグナイザ2(516−2)がイベント又はサブイベントを対応するジェスチャとして認識することを防止する。その結果、この例において、ジェスチャ・レコグナイザ1(516−1)のみが動作メッセージ(518)を対応する対象−動作ペア(例えば、対象:動作1(522−1))に送信する。
【0133】
図5B及び図5Cは、一部の実施形態に係るジェスチャ認識方法を示すフローチャートである。図5Bは、ジェスチャ・レコグナイザが対応するデリゲートを呼び出すフローチャートを示し、図5Cは、ソフトウェア・アプリケーションが個別のジェスチャ・レコグナイザに対応するデリゲートを呼び出すフローチャートを示す。図5B及び図5Cにおいて、各列は各エンティティ又は各コンポーネント(例えば、ソフトウェア・アプリケーション、ジェスチャ・レコグナイザ又はデリゲート)において実行される処理を表す。
【0134】
図5Bにおいて、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のビュー(例えば、506、508、510)のうちの1つ以上のビューを表示する(530)。複数のビューは、複数のジェスチャ・レコグナイザ(例えば、516−1〜516−6)を含む。ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる(532)。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる(533−1)。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる(533−2)。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。以下の説明を通じて、割り当てられたデリゲートに対する各参照は、対応するデリゲートをも意味してもよく、デリゲートが割り当てられたジェスチャ・レコグナイザに対する各参照は、特定のデリゲートに対応するジェスチャ・レコグナイザをも意味してもよい。
【0135】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のイベントを検出し(534)、ジェスチャ・レコグナイザ(例えば、320)のうちの1つ以上を使用して各イベントを処理する(536)。
【0136】
個別のイベントは、(1つ以上のジェスチャ・レコグナイザ(例えば320)の)個別のジェスチャ・レコグナイザにおいて処理される(538)。デリゲートの動作を説明するために、イベントを処理する個別のジェスチャ・レコグナイザが対応するデリゲートを有すると仮定する。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートを呼び出し、割り当てられたデリゲートは、アプリケーション状態に従って1つ以上の値を判定するために実行される(540)。それに応答して、個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する(542)。
【0137】
ソフトウェア・アプリケーションは、イベントのうちの1つ以上に対応するジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って実行される(544)。
【0138】
言い換えると、これらの実施形態において、個別のジェスチャ・レコグナイザは、ジェスチャ・レコグナイザの挙動を判定する1つ以上の値を取得するために、割り当てられたデリゲートを呼び出す。上述したように、対応するデリゲートにより変更されるジェスチャ・レコグナイザの挙動は、タッチ/イベント情報を受信するかどうか、イベント可能状態から遷移するかどうか、及び/又は同時認識を許可するかどうかを含む。(場合によっては、他のジェスチャ・レコグナイザのデリゲートの調整された動作を伴う)デリゲートによる動作はまた、どのジェスチャ・レコグナイザがどのタッチを受信するかを制御し、どのジェスチャ・レコグナイザが「イベント認識済」又は「イベント開始済」状態に遷移することを許可されるかを判定し、同時認識を許可又は無効にすることにより、2つ以上のジェスチャ・レコグナイザの動作を調整する。
【0139】
図5Cにおいて、ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のビュー(例えば、506、508、510)のうち1つ以上のビューを表示する(530)。複数のビューは、複数のジェスチャ・レコグナイザ(例えば、516−1〜516−6)を含む。ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる(532)。一部の実施形態において、個別のジェスチャ・レコグナイザは対応するデリゲートに割り当てられる(533−1)。一部の実施形態において、個別のデリゲートは、対応するジェスチャ・レコグナイザに割り当てられる(533−2)。これに代えて、デリゲートとジェスチャ・レコグナイザとの相関性は、実行時前に確立されてもよい。
【0140】
ソフトウェア・アプリケーション(例えば、アプリケーション132−1)は、1つ以上のタッチを検出し(535)、ジェスチャ・レコグナイザのうちの1つ以上を使用して1つ以上のタッチの各々を処理する(546)。1つ以上のタッチの各々を処理する際、ソフトウェア・アプリケーションは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する(548)。一部の実施形態において、候補ジェスチャ・レコグナイザは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザである(例えば、図5Aのジェスチャ・レコグナイザ516−1、516−2及び516−3)。
【0141】
個別の候補ジェスチャ・レコグナイザに割り当てられたデリゲートは、アプリケーション状態に従って「受信タッチ値」を取得するために実行される(550)。「受信タッチ値」は、個別の候補ジェスチャ・レコグナイザがイベント/タッチ情報を受信できるかどうか(例えば、図4C及び図4Dの「受信すべきか」のステップ450)を判定するために使用される。
【0142】
個別のデリゲートから取得された受信タッチ値に基づいて、受信ジェスチャ・レコグナイザの集合が識別される(552)。受信ジェスチャ・レコグナイザの集合は、候補ジェスチャ・レコグナイザの部分集合を含む(552)。一部の実施形態において、受信ジェスチャ・レコグナイザの集合は、割り当てられた個別のデリゲートを有しない全ての候補ジェスチャ・レコグナイザを含む。候補ジェスチャ・レコグナイザのうちの2つ以上が対応するデリゲートを有するならば、そのような各候補ジェスチャ・レコグナイザのデリゲートは、候補ジェスチャ・レコグナイザがイベント/タッチ情報を受信できるかを判定するために実行される。候補ジェスチャ・レコグナイザに対応するデリゲートから取得された「受信タッチ値」は、受信ジェスチャ・レコグナイザの集合を識別するために使用される。
【0143】
個別のタッチは、受信ジェスチャ・レコグナイザの集合において処理される(554)。個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果、イベント又はジェスチャが認識されるならば(図4C及び図4Dの「定義に合致するか」453を参照)、個別のジェスチャ・レコグナイザに対応するデリゲート(存在する場合)は、イベント又はジェスチャの認識が許可されるかを判定するために呼び出される。これは、図4C及び図4Dを参照して上述した「開始すべきか」の動作454に対応する。デリゲートは、状態遷移が許可されるかを示す1つ以上の値を返す。個別のジェスチャ・レコグナイザは、割り当てられたデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報をソフトウェア・アプリケーションに条件付きで送信する(542)。ソフトウェア・アプリケーションは、個別のタッチに対応するジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って実行される(545)。
【0144】
言い換えると、これらの実施形態において、ソフトウェア・アプリケーション(又はオペレーティングシステム118又は制御アプリケーション124)は、個別のタッチを処理すべき候補ジェスチャ・レコグナイザ(存在する場合)を示す値を取得するために個別の候補ジェスチャ・レコグナイザに対応するデリゲートを呼び出す。さらに、ジェスチャ・レコグナイザの挙動の他の側面は、割り当てられたデリゲートによりさらに変更されうる。
【0145】
図6A及び図6Bは、一部の実施形態に係るデリゲートから取得された情報に従って個別のイベントを処理する例示的な方法を示すフローチャートである。
【0146】
方法600は、1つ以上のイベント・センサ(例えば、130)を有し、複数のビュー(例えば、アプリケーション・ビュー316)とソフトウェア・アプリケーション(例えば、317)のアプリケーション状態とを含むソフトウェア・アプリケーション(例えば、132)を実行するように構成された電子デバイス(例えば、デバイス102又は104)において実行される(602)。
【0147】
デバイスは、複数のビューのうちの1つ以上のビューを表示する(604)。表示された1つ以上のビューの個別のビューは、1つ以上のジェスチャ・レコグナイザ(例えば、イベント・レコグナイザ320−1)を含む。一部の実施形態において、表示された1つ以上のビューの少なくとも部分集合は1つ以上のジェスチャ・レコグナイザを含み、表示された1つ以上のビューの残りのビューはジェスチャ・レコグナイザを含まない。
【0148】
1つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは、対応するデリゲートを有する。一部の実施形態において、全てのジェスチャ・レコグナイザが対応するデリゲートを有するわけではない(すなわち、一部の実施形態において、一部のジェスチャ・レコグナイザは対応するデリゲートを有さない)。一部の実施形態において、個別のジェスチャ・レコグナイザは2つ以上のデリゲートに対応し、各デリゲートは、別個の条件に対して対応するジェスチャ・レコグナイザに対する別個の値を判定する(例えば、第1デリゲートは「受信すべきか」450を判定し、第2デリゲートは「認識が阻止されるか」451を判定する等)。一部の実施形態において、2つ以上のジェスチャ・レコグナイザが同一のデリゲートに対応する(例えば、同一のデリゲートを利用する)。
【0149】
一部の実施形態において、デバイスは個別のデリゲート(例えば、デリゲート321−1)を個別のジェスチャ・レコグナイザ(例えば、320−1)に割り当てる(606)(例えば、図5Bのステップ532の説明を参照)。これに代えて、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、それ故、デリゲートは実行時に割り当てられる必要はない。本明細書におけるイベント/ジェスチャ・レコグナイザの割り当てられたデリゲートに対する全ての参照は、イベント/ジェスチャ・レコグナイザの対応するデリゲートに同様に適用可能であることが理解され、対応するデリゲートに対する全ての参照は、割り当てられたデリゲートに等しく適用可能であることが理解される。
【0150】
一部の実施形態において、表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み(608)、デバイスは複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる。言い換えると、一部のジェスチャ・レコグナイザは割り当てられたデリゲートを有しなくてもよいので、デバイスはジェスチャ・レコグナイザの個数より少ないデリゲートを有してもよい。
【0151】
デバイスは1つ以上のイベントを検出する(610)。一部の実施形態において、デバイスは、センサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156を使用して1つ以上のイベントを検出する。
【0152】
デバイスは、個別のジェスチャ・レコグナイザを使用して1つ以上のイベントの個別のイベントを処理する(612)。個別のイベントの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを処理すること(例えば、イベント比較部332を使用してイベントとジェスチャ定義333とを比較すること)と、アプリケーション状態に従って1つ以上の値を判定するために対応するデリゲートを実行すること(例えば、図5Bの540)と、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された1つ以上の値に従って、個別のイベントに対応する情報(例えば、ジェスチャ・レコグナイザが「タップ・ジェスチャ」又は「スワイプ・ジェスチャ」等のイベントを認識するかどうか、イベントの位置及びタイムスタンプ等の関連イベント情報、並びに/又は他の追加の情報)をソフトウェア・アプリケーションに条件付きで送信することとを含む。
【0153】
一部の実施形態において、デリゲートは、(「開始すべきか」、「受信すべきか」及び「同時認識」等の)イベント・レコグナイザ属性を判定するための命令を有し、実行された場合に1つ以上の対応する値を返す。一部の実施形態において、イベント・レコグナイザ属性に対する値は、アプリケーション状態に従ってソフトウェア・アプリケーションにより設定されうる。一部の実施形態において、属性に対する値は開発者により事前に定義される。一部の実施形態において、個別のイベント/ジェスチャ・レコグナイザの内部属性はデフォルト値を有し、デフォルト値はイベント/ジェスチャ・レコグナイザに対応するデリゲートにより上書きされうる。
【0154】
例えば、(例えば、ジェスチャ・レコグナイザの対応するデリゲートにより判定された1つ以上の値であって、ジェスチャ・レコグナイザがイベント可能状態410からイベント認識済状態420又はイベント開始済状態412に遷移できるか、若しくは阻止側のジェスチャ・レコグナイザが存在するにも関わらずジェスチャ・レコグナイザがイベントを同時に認識できるかを示す1つ以上の値に基づいて)ジェスチャ・レコグナイザがイベントを認識することを許可された場合に、デバイスは個別のイベントに対応する情報を送信する。一部の実施形態において、デバイスは、対応するジェスチャ定義又はその一部にイベントが合致する場合にのみ、個別のイベントに対応する情報を送信する。さらに、アプリケーション状態又は他の条件により、個別のジェスチャ・レコグナイザが個別のイベントに対応する情報を送信することが防止されうる。
【0155】
デバイスは、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーション(例えば、132−1)を実行する(614)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される(例えば、動作−対象ペア345に列挙されたイベント・ハンドラ322が起動される)。
【0156】
一部の実施形態において、1つ以上のイベント・センサ(例えば、130)は1つ以上のタッチを検出するように構成されたタッチセンサ面(例えば、156又は分離したタッチセンサ面)を含み、1つ以上のイベントは1つ以上のタッチを含み、個別のイベントを処理することは個別のタッチを処理することを含む(616)。一部の実施形態において、1つ以上のイベント・センサ(例えば、130)は加速度計を含み、1つ以上のイベントは電子デバイスの回転又は他の動きも含む。
【0157】
一部の実施形態において、デバイスは、割り当てられたデリゲートにより判定された1つ以上の値に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを条件付きで受信する(618)。例えば、個別のジェスチャ・レコグナイザが個別のタッチを受信することを対応するデリゲートにより判定された1つ以上の値(例えば、「受信タッチ値」)が許可する場合にのみ(例えば、図4C及び図4Dにおける「受信すべきか」450)、個別のジェスチャ・レコグナイザは個別のタッチを受信する。
【0158】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを含む(620)。これらの実施形態において、ステップ618において説明したように個別のタッチを条件付きで受信する代わりに、個別のジェスチャ・レコグナイザは個別のタッチを無視する。
【0159】
一部の実施形態において、個別のタッチを処理することは、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することを含む(622)。これらの実施形態において、個別のタッチが阻止され、それ故、個別のジェスチャ・レコグナイザに到達しないので、ジェスチャ・レコグナイザは、個別のタッチを条件付きで受信するか又は無視する必要がない。一部の実施形態において、個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することは、イベント情報を対応するジェスチャ・レコグナイザに送信しないようにイベント・ディスパッチャ・モジュール315に命令することを含む。
【0160】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している(例えば、個別のタッチがジェスチャ定義又はその一部に合致する)場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること(例えば、図4C及び図4Dの「開始すべきか」454)を含む(624)。一部の実施形態において、状態遷移可能値(例えば、「開始すべきか」の値)が状態遷移基準を満たすことを対応するデリゲートにより判定される場合に状態遷移が可能にされる。
【0161】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む(626)。言い換えると、状態遷移は、対応するデリゲートが遷移を可能にする(例えば、阻止しない)としても、条件付きで可能にされる。例えば、状態遷移の条件は、個別のタッチ/イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ/イベントを受信することを許可されるかどうか、及び/又は個別のタッチ/イベントの認識が阻止されるかどうかを含む。
【0162】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、ジェスチャを認識した別のジェスチャ・レコグナイザにより状態遷移が防止/無効にされたときに(条件付きで)無効にすることを含む。特に、ジェスチャ・レコグナイザは、他のジェスチャ・レコグナイザ(群)がイベント認識済状態420又はイベント開始済状態412に遷移することを1つのジェスチャ・レコグナイザが防止できるようにペアにされうる(又はグループ化されうる)(例えば、第1ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザを防止するように構成される場合に、第1ジェスチャ・レコグナイザは、イベント/タッチを認識すると、第2ジェスチャ・レコグナイザに対応するデリゲートにより返された値に関わらず第2ジェスチャ・レコグナイザがそのイベント/タッチを認識することを防止する)。
【0163】
一部の実施形態において、複数のジェスチャ・レコグナイザは優先順位に基づいて(例えば、コードのシーケンス、インスタンス化のシーケンス、個別のジェスチャ・レコグナイザに対応するビュー階層、若しくは開発者又はソフトウェア・アプリケーションにより割り当てられた優先順位に基づいて)列挙される。2つ以上のジェスチャ・レコグナイザが個別のタッチを同時に認識する場合に、優先順位が最も高いジェスチャ・レコグナイザは、他の全てのジェスチャ・レコグナイザが個別のタッチを認識することを阻止する。
【0164】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(628)。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、第2ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる(例えば、図4C及び図4Dのステップ452)。
【0165】
一部の実施形態において、個別のジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(630)。例えば、別のジェスチャ・レコグナイザはイベントの認識を阻止するとしても、ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可しうる(例えば、図4C及び図4Dのステップ455及び456)。
【0166】
一部の実施形態において、個別のジェスチャ・レコグナイザにおける個別のタッチを処理することは、第1ジェスチャ・レコグナイザ及び第2ジェスチャ・レコグナイザにそれぞれ対応するデリゲートにより判定された値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む。
【0167】
図7A及び図7Bは、一部の実施形態に係るデリゲートから取得された受信タッチ値に従って個別のタッチを処理する例示的な方法を示すフローチャートである。
【0168】
方法700は、タッチセンサ面(例えば、156)を有し、複数のビュー(例えば、316)とソフトウェア・アプリケーション(例えば、317)のアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイス(例えば、デバイス104)において実行される(702)。
【0169】
デバイスは、複数のビュー(例えば、316)のうちの1つ以上のビューを表示する(704)。表示された1つ以上のビューの個別のビューは1つ以上のジェスチャ・レコグナイザ(例えば、320−1又は343−2)を含み、1つ以上のジェスチャ・レコグナイザの個別のジェスチャ・レコグナイザは対応するデリゲート(例えば、321−1又は346)を有する。
【0170】
デバイスは、タッチセンサ面(例えば、156又は130)における1つ以上のタッチを検出する(706)。1つ以上のタッチはそれぞれ、表示された1つ以上のビュー内のタッチ位置を有する。
【0171】
デバイスは、1つ以上のタッチの個別のタッチを処理する(708)(例えば、イベント比較部332を使用して、個別のタッチがジェスチャ定義333に合致するかを判定する(453))。個別のタッチを処理することは、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを実行すること(例えば、図5Cの550)と、受信タッチ値が所定の基準(例えば、一部の実施形態において、所定の基準は、個別のジェスチャ・レコグナイザが受信ジェスチャ・レコグナイザ552であるということ)を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、554)と、個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信すること(例えば、542)とを含む(710)。
【0172】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む(712)(例えば、図3Bのアプリケーション・ビュー316及びレコグナイザ320、図5Aのビュー508、510及び512、並びにジェスチャ・レコグナイザ516)。別個のデリゲートは、複数のジェスチャ・レコグナイザの少なくとも部分集合に対応する。オプションとして、デバイスは、複数のジェスチャ・レコグナイザ(例えば、320)の少なくとも部分集合に別個のデリゲート(例えば、321)を割り当てる。1つ以上のタッチの個別のタッチを処理することは、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別すること(例えば、548)と、対応するデリゲートを有する候補ジェスチャ・レコグナイザ毎に、アプリケーション状態に従って受信タッチ値を取得するために対応するデリゲートを実行すること(例えば、550)と、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別すること(例えば、552)と、受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、554)とを含む。
【0173】
一部の実施形態において、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、ヒット・ビューにアタッチされたジェスチャ・レコグナイザの集合を識別することを含む。オプションとして、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別することは、個別のタッチに対応するジェスチャ定義を含むジェスチャ・レコグナイザの集合を識別することを含む。さらに、一部の実施形態において、受信ジェスチャ・レコグナイザの集合を識別することは、対応するデリゲートが受信タッチ基準を満たす個別の受信タッチ値を提供する候補ジェスチャ・レコグナイザの部分集合を識別することを含む(例えば、受信タッチ値は、対応するジェスチャ・レコグナイザが個別のタッチを受信できることを示す)。
【0174】
一部の実施形態において、1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って対応するデリゲートを有する個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することと、アプリケーション状態に従って1つ以上の値を判定するためにデリゲートを実行することと、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともにデリゲートにより判定された1つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに条件付きで送信することとを含む(718)。デバイスは、1つ以上のタッチに対応する、1つ以上の受信ジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する。
【0175】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している(例えば、個別のタッチがジェスチャ定義又はその一部に合致する)場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに可能にすること(例えば、図4C及び図4Dの「開始すべきか」454)を含む(720)。
【0176】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることを含む(722)。例えば、状態遷移のための条件は、個別のタッチ/イベントがジェスチャ定義又はその一部に合致するかどうか、個別のジェスチャ・レコグナイザが個別のタッチ/イベントを受信することを許可されるかどうか、個別のタッチ/イベントの認識が阻止されるかどうか、及び/又はシステムレベルの命令(例えば、シャットダウン処理又はアプリケーションよりも高い優先順位を有する他の処理)が状態遷移を防止するかを含む。
【0177】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することを含む(724)。例えば、第2ジェスチャ・レコグナイザに対応するデリゲートは、第2ジェスチャ・レコグナイザが第2ジェスチャ・レコグナイザにおいてジェスチャを処理することを許可する(例えば、図4C及び図4Dのステップ452)。
【0178】
一部の実施形態において、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理することは、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理すること(例えば、図4C及び図4Dのステップ455及び456)を含む(726)。
【0179】
デバイスは、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを実行する(例えば、545)(716)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上は、個別のジェスチャ・レコグナイザから受信された情報に従って起動される(例えば、動作−対象ペア345に列挙されたイベント・ハンドラ322が起動される)。
【0180】
図8A及び図8Bは、一部の実施形態に係る離散ジェスチャ・レコグナイザ及び連続ジェスチャ・レコグナイザを含むソフトウェア・アプリケーションにおいて個別のタッチを処理する例示的な方法を示すフローチャートである。
【0181】
方法800は、タッチセンサ面を有し、ソフトウェア・アプリケーションを実行するように構成された電子デバイス(例えば、デバイス104)において実行される(802)。
【0182】
デバイスは、ソフトウェア・アプリケーション(例えば、132−1)の1つ以上のビュー(例えば、316)を表示する(804)。表示された1つ以上のビューは、複数のジェスチャ・レコグナイザ(例えば、320)を含む。複数のジェスチャ・レコグナイザは、少なくとも1つの離散ジェスチャ・レコグナイザ(例えば、図4A及び図4C)と、少なくとも1つの連続ジェスチャ・レコグナイザ(例えば、図4B及び図4D)とを含む。
【0183】
一部の実施形態において、離散ジェスチャ・レコグナイザは個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。
【0184】
一部の実施形態において、離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して動作メッセージの単一の集合を送信するように構成される。複数の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は複数の動作メッセージを含む。単一の対象−動作ペアが個別の離散ジェスチャ・レコグナイザに割り当てられる場合に、動作メッセージの単一の集合は単一の動作メッセージを含む。
【0185】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態(例えば、図4A〜図4D)の集合を有する(822)。
【0186】
一部の実施形態において、離散ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第1集合を有する(824)。
●離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態410。
●個別のジェスチャの認識に対応するジェスチャ認識済状態420。
●離散ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態430。
【0187】
一部の実施形態において、連続ジェスチャ・レコグナイザは、以下を含むジェスチャ・レコグナイザ状態の第2集合を有する。
●連続ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態410。
●個別のジェスチャの初期認識に対応するジェスチャ開始済状態412。
●個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態414。
●認識された個別のジェスチャの完了に対応するジェスチャ終了済状態416。
●個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態418。
●連続ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態430。
【0188】
一部の実施形態において、ジェスチャ・レコグナイザ状態は割り当てられた値(例えば、ジェスチャ・レコグナイザ状態値)を有する。一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する(826)。
【0189】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザ及びスワイプ・ジェスチャ・レコグナイザのうちの1つ以上を含み(828)、少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの1つ以上を含む。
【0190】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含み(830)、少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【0191】
タップ・ジェスチャ・レコグナイザは、タップ・ジェスチャを認識するように構成される。スワイプ・ジェスチャ・レコグナイザは、スワイプ・ジェスチャ(例えば、タッチセンサ面に対するタッチのフリック)を認識するように構成される。長押しジェスチャ・レコグナイザは、長押しジェスチャ(例えば、押下及びタッチの保持)を認識するように構成される。ピンチ・ジェスチャ・レコグナイザは、ピンチ・ジェスチャ(例えば、2つ以上のタッチの接触及び相対的な移動)を認識するように構成される。パン・ジェスチャ・レコグナイザは、パン・ジェスチャ(例えば、タッチ及び1つ以上のタッチの整合性のある移動)を認識するように構成される。回転ジェスチャ・レコグナイザは、回転(例えば、接触及び2つ以上のタッチの回転移動)を認識するように構成される。変換ジェスチャ・レコグナイザは、変換ジェスチャ(例えば、パン、回転及びピンチを表す2つ以上のタッチの同時移動)を認識するように構成される。
【0192】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザ(例えば上述した離散ジェスチャ・レコグナイザの1つ以上)及び少なくとも1つの連続ジェスチャ・レコグナイザ(例えば、上述した連続ジェスチャ・レコグナイザの1つ以上)は、ソフトウェア開発者がソフトウェアライブラリを使用してこれらをサードパーティ・ソフトウェアに組み込めるようにソフトウェアライブラリに配布される。これと比較して、ビューはビュー・スタイル(例えば、ユーザインタフェース・オブジェクト及びフレームの色、サイズ及び形状)を有する。一部の実施形態において、所定のビュー・スタイルは、ソフトウェア開発者がソフトウェアライブラリ(又はテンプレート)を使用して所定のビュー・スタイルを有するソフトウェア・アプリケーションを開発できるように、UIインタフェースAPI(例えば、図2の204)の一部として配布される。
【0193】
デバイスは、1つ以上のタッチを検出する(図8Aの808)。一部の実施形態において、デバイスは、センサ130、入力デバイス128及び/又はタッチセンサ・ディスプレイ156を使用して1つ以上のイベントを検出する。
【0194】
デバイスは、1つ以上のジェスチャ・レコグナイザを使用して各タッチを処理する(810)。個別のタッチの処理は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを処理すること(例えば、イベント比較部332を使用してイベントとジェスチャ定義333とを比較し、イベントがジェスチャ定義333又はその一部に合致するかを判定すること)と、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って1つ以上の動作メッセージの各々をソフトウェア・アプリケーションに条件付きで送信すること(例えば、個別のタッチがジェスチャ定義に合致した場合に動作メッセージを送信すること)とを含む(812)。
【0195】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有する(814)。1つ以上の個別の動作メッセージを条件付きで送信することは、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って1つ以上の個別の動作メッセージを条件付きで送信することを含む。例えば、ソフトウェア・アプリケーションのアプリケーション状態は、1つ以上の個別の動作メッセージを送信することを遅延又は防止しうる(例えば、システムリソースが過度に使用される場合、優先順位がより高い処理が処理される必要がある場合等)。
【0196】
デバイスは、タッチのうちの1つに対応するジェスチャ・レコグナイザのうちの1つ以上から受信された1つ以上の動作メッセージに従ってソフトウェア・アプリケーションを実行する(816)。例えば、ソフトウェア・アプリケーション(例えば、132−1)は複数のイベント・ハンドラ322を含み、イベント・ハンドラ322のうちの1つ以上はジェスチャ・レコグナイザのうちの1つ以上から受信された動作メッセージに従って起動される。
【0197】
一部の実施形態において、デバイスは、個別のジェスチャ・レコグナイザからの追加の情報を要求する(818)。ソフトウェア・アプリケーションを実行することは、追加の情報にさらに従ってソフトウェア・アプリケーションを実行することを含む。例えば、個別のジェスチャ・レコグナイザは追加の情報(例えば、サブイベント毎のタイムスタンプ、ジッタ量、速度、方向、期間、倍率、角度等の詳細情報)を提供できる。
【0198】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含む(820)。
【0199】
一部の実施形態によると、図9は、上述したような本発明の原理に従って構成された電子デバイス900の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図9において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0200】
図9に示すように、電子デバイス900は、1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニット902と、1つ以上のイベント検知ユニット902に結合された処理ユニット906とを含む。一部の実施形態において、電子デバイスは、処理ユニット906に結合された表示ユニット904も含む。一部の実施形態において、処理ユニット906は、実行ユニット908、表示可能ユニット910、検出ユニット912、イベント処理ユニット914、送信ユニット916、レコグナイザ可能ユニット918、阻止ユニット920及び割り当てユニット922を含む。
【0201】
処理ユニット906は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを(例えば、実行ユニット908で)実行し、複数のビューのうちの1つ以上のビューの表示を(例えば、表示ユニット904に関する表示可能ユニット910で)可能にするように構成される。表示された1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット906は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のイベントを(例えば、イベント処理ユニット914で)処理し、アプリケーション状態に従って1つ以上の値を判定するために対応するデリゲートを(例えば、実行ユニット908で)実行し、個別のジェスチャ・レコグナイザによる個別のイベントの処理の結果に従うとともに対応するデリゲートにより判定された1つ以上の値に従って個別のイベントに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット916で)条件付きで送信することにより、1つ以上のイベント検知ユニット902により検知された1つ以上のイベントを(例えば、検出ユニット912で)検出し、個別のジェスチャ・レコグナイザを使用して1つ以上のイベントの個別のイベントを(例えば、イベント処理ユニット914で)処理するように構成される。処理ユニット906は、個別のイベントに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット908で)実行するように構成される。
【0202】
一部の実施形態において、1つ以上のイベント検知ユニット908は、1つ以上のタッチを検出するように構成されたタッチセンサ面ユニット(例えば、図10のタッチセンサ面ユニット1002)を含み、1つ以上のイベントは1つ以上のタッチを含み、処理ユニット906は個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0203】
一部の実施形態において、処理ユニット906は、個別のジェスチャ・レコグナイザが対応するデリゲートにより判定された1つ以上の値に従って個別のタッチを条件付きで受信することを(例えば、レコグナイザ可能ユニット918で)可能にするように構成される。
【0204】
一部の実施形態において、処理ユニット906は、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを無視することを可能にすることにより個別のタッチを(例えば、イベント処理ユニット914及び/又はレコグナイザ可能ユニット918で)処理するように構成される。
【0205】
一部の実施形態において、処理ユニット906は、対応するデリゲートにより判定された1つ以上の値が所定のタッチ無視基準に合致する場合に個別のジェスチャ・レコグナイザが個別のタッチを受信することを阻止することにより個別のタッチを(例えば、イベント処理ユニット914及び/又は阻止ユニット920で)処理するように構成される。
【0206】
一部の実施形態において、処理ユニット906は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が対応するデリゲートにより可能にされたときに可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914及び/又はレコグナイザ可能ユニット918で)処理するように構成される。
【0207】
一部の実施形態において、処理ユニット906は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、対応するデリゲートにより状態遷移が可能にされたときに条件付きで可能にすることにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914及び/又は可能ユニット918で)処理するように構成される。
【0208】
一部の実施形態において、処理ユニット906は、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0209】
一部の実施形態において、処理ユニット906は、個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、イベント処理ユニット914で)処理するように構成される。
【0210】
一部の実施形態において、表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み、処理ユニット906は、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを(例えば、割り当てユニット922で)割り当てるように構成される。
【0211】
一部の実施形態によると、図10は、上述したような本発明の原理に従って構成された電子デバイス1000の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図10において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0212】
図10に示すように、電子デバイス1000は、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニット1002と、タッチセンサ面ユニット1002に結合された処理ユニット1006とを含む。一部の実施形態において、電子デバイス1000は、処理ユニット1006に結合された表示ユニット1004も含む。一部の実施形態において、処理ユニット1006は、実行ユニット1008、表示可能ユニット1010、検出ユニット1012、タッチ処理ユニット1014、送信ユニット1016、割り当てユニット1018、識別ユニット1020及びレコグナイザ可能ユニット1022を含む。
【0213】
処理ユニット1006は、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行し、複数のビューのうちの1つ以上のビューの表示を(例えば、表示ユニット1004に関する表示可能ユニット1010で)可能にするように構成される。表示された1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する。処理ユニット1006は、タッチセンサ面ユニット1002において受信された1つ以上のタッチを(例えば、検出ユニット1012で)検出するように構成される。各タッチは、表示されたビューのうちの1つ以上のビュー内に入るタッチ位置を有する。処理ユニット1006は、アプリケーション状態に従って受信タッチ値を取得するために個別のジェスチャ・レコグナイザに対応するデリゲートを(例えば、実行ユニット1008で)実行し、個別のタッチ値が所定の基準を満たす場合に個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理し、個別のタッチに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット1016で)条件付きで送信することにより1つ以上のタッチの個別のタッチを処理するように構成される。処理ユニット1006は、個別のタッチに対応する、個別のジェスチャ・レコグナイザから受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行するように構成される。
【0214】
一部の実施形態において、複数のビューは複数のジェスチャ・レコグナイザを含む。処理ユニット1006は、複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を(例えば、識別ユニット1020で)識別し、割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎にアプリケーション状態に従って受信タッチ値を取得するために割り当てられたデリゲートを(例えば、実行ユニット1008で)実行し、取得された受信タッチ値に従って候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを(例えば、識別ユニット1020で)識別し、受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理することにより、複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを(例えば、割り当てユニット1018で)割り当て、1つ以上のタッチの個別のタッチを処理するように構成される。
【0215】
一部の実施形態において、処理ユニット1006は、デリゲートが個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って割り当てられた個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理し、アプリケーション状態に従って1つ以上の値を判定するために割り当てられたデリゲートを(例えば、実行ユニット1008で)実行し、個別のジェスチャ・レコグナイザによる個別のタッチの処理の結果に従うとともに割り当てられたデリゲートにより判定された1つ以上の値に従って個別のタッチに対応する情報をソフトウェア・アプリケーションに(例えば、送信ユニット1016で)条件付きで送信することにより1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成され、タッチの1つ以上に対応する、受信ジェスチャ・レコグナイザの1つ以上から受信された情報に従ってソフトウェア・アプリケーションを(例えば、実行ユニット1008で)実行するように構成される。
【0216】
一部の実施形態において、処理ユニット1006は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに(例えば、レコグナイザ可能ユニット1022で)可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【0217】
一部の実施形態において、処理ユニット1006は、検出されたタッチが個別のジェスチャ定義に整合している場合に、個別のジェスチャ・レコグナイザにおける対応する状態遷移を、状態遷移が割り当てられたデリゲートにより可能にされたときに(例えば、レコグナイザ可能ユニット1022で)条件付きで可能にすることにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを処理するように構成される。
【0218】
一部の実施形態において、処理ユニット1006は、第2ジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理するように構成される。
【0219】
一部の実施形態において、処理ユニット1006は、個別のジェスチャ・レコグナイザに割り当てられたデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて個別のタッチを同時に処理することにより、個別の受信ジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1014で)処理するように構成される。
【0220】
一部の実施形態によると、図11は、上述したような本発明の原理に従って構成された電子デバイス1100の機能ブロック図を示す。デバイスの機能ブロックは、本発明の原理を実行するためにハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアとの組み合わせにより実現されうる。図11において説明する機能ブロックは、上述したような本発明の原理を実現するために組み合わされてもよく又はサブブロックに分離されてもよいことが当業者には理解される。従って、本明細書における説明は、本明細書で説明する機能ブロックの任意の可能な組み合わせ、分離又は更なる定義をサポートしうる。
【0221】
図11に示すように、電子デバイス1100は、1つ以上のタッチを受信するように構成されたタッチセンサ面ユニット1102と、タッチセンサ面ユニット1102に結合された処理ユニット1106とを含む。一部の実施形態において、電子デバイス1100は、処理ユニット1106に結合された表示ユニット1104も含む。一部の実施形態において、処理ユニット1106は、実行ユニット1108、表示可能ユニット1110、検出ユニット1112、タッチ処理ユニット1114、送信ユニット1116及び要求ユニット1118を含む。
【0222】
処理ユニット1106は、ソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行し、ソフトウェア・アプリケーションの1つ以上のビューの表示を(例えば、表示ユニット1104に関する表示可能ユニット1110で)可能にするように構成される。表示された1つ以上のビューは複数のジェスチャ・レコグナイザを含み、複数のジェスチャ・レコグナイザは少なくとも1つの離散ジェスチャ・レコグナイザと少なくとも1つの連続ジェスチャ・レコグナイザとを含む。離散ジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成され、連続ジェスチャ・レコグナイザは、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成される。処理ユニット1106は、タッチセンサ面ユニット1102において受信された1つ以上のタッチを(例えば、検出ユニット1112で)検出し、ジェスチャ・レコグナイザのうちの1つ以上を使用して各タッチを(例えば、タッチ処理ユニット1114で)処理するように構成される。処理ユニット1106は、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って個別のジェスチャ・レコグナイザにおいて個別のタッチを(例えば、タッチ処理ユニット1114で)処理し、個別のジェスチャ・レコグナイザにおける個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージをソフトウェア・アプリケーションに(例えば、送信ユニット1116で)条件付きで送信することにより個別のタッチを処理するように構成される。処理ユニット1106は、タッチのうちの1つ以上に対応するジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従ってソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行するように構成される。
【0223】
一部の実施形態において、各ジェスチャ・レコグナイザは、ジェスチャ・レコグナイザ状態の集合を有する。
【0224】
一部の実施形態において、離散ジェスチャ・レコグナイザは、離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、個別のジェスチャの認識に対応するジェスチャ認識済状態と、離散ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有する。連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、連続ジェスチャ・レコグナイザが1つ以上のタッチを個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有する。
【0225】
一部の実施形態において、ジェスチャ認識済状態及びジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有する。
【0226】
一部の実施形態において、ソフトウェア・アプリケーションはアプリケーション状態を有し、処理ユニット1106は、ソフトウェア・アプリケーションのアプリケーション状態にさらに従って1つ以上の動作メッセージを(例えば、送信ユニット1116で)条件付きで送信するように構成される。
【0227】
一部の実施形態において、処理ユニット1106は、個別のジェスチャ・レコグナイザからの追加の情報を(例えば、要求ユニット1118で)要求し、追加の情報にさらに従ってソフトウェア・アプリケーションを(例えば、実行ユニット1108で)実行するように構成される。
【0228】
一部の実施形態において、追加の情報は、個別のジェスチャ・レコグナイザにおいて処理されたタッチの個数及び位置を含む。
【0229】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含む。少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザ、ピンチ・ジェスチャ・レコグナイザ、パン・ジェスチャ・レコグナイザ、回転ジェスチャ・レコグナイザ及び変換ジェスチャ・レコグナイザのうちの1つ以上を含む。
【0230】
一部の実施形態において、少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザとスワイプ・ジェスチャ・レコグナイザとを含む。少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含む。
【0231】
説明の目的で、特定の実施形態を参照して上記説明を行った。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及びその実際的な応用例を最適に説明するために実施形態を選択して説明した。これにより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。
【特許請求の範囲】
【請求項1】
1つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
1つ以上のイベントを検出する工程と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理する工程であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項2】
前記1つ以上のイベント・センサは1つ以上のタッチを検出するように構成されたタッチセンサ面を含み、前記1つ以上のイベントは前記1つ以上のタッチを含み、前記個別のイベントを処理する工程は個別のタッチを処理する工程を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記対応するデリゲートにより判定された前記1つ以上の値に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを条件付きで受信する工程をさらに有することを特徴とする請求項2に記載の方法。
【請求項4】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視する工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項5】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止する工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項6】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項7】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項8】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項2乃至7の何れか1項に記載の方法。
【請求項9】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項2乃至7の何れか1項に記載の方法。
【請求項10】
前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記方法は、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てる工程を含むことを特徴とする請求項1乃至9の何れか1項に記載の方法。
【請求項11】
イベントを検出するための1つ以上のイベント・センサと、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のレコグナイザは個別のデリゲートを有する、命令と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項12】
1つ以上のイベント・センサを有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは個別のデリゲートを有する、命令と、
1つ以上のイベントを検出するための命令と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項13】
タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出する工程と、
前記1つ以上のタッチの個別のタッチを処理する工程であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項14】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記方法は、前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる工程を含み、
前記1つ以上のタッチの前記個別のタッチを処理する工程は、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する工程と、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行する工程と、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別する工程と、
受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記割り当てられたデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記1つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含み、
前記方法は、前記タッチのうちの1つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項15に記載の方法。
【請求項18】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第2ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項15乃至17の何れか1項に記載の方法。
【請求項19】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項15乃至17の何れか1項に記載の方法。
【請求項20】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令と、
前記1つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項21】
タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令と、
前記タッチセンサ面における1つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項22】
タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、工程と、
1つ以上のタッチを検出する工程と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理する工程であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項23】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項22に記載の方法。
【請求項24】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有することを特徴とする請求項23に記載の方法。
【請求項25】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項24に記載の方法。
【請求項26】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記1つ以上の個別の動作メッセージを条件付きで送信する工程は、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記1つ以上の個別の動作メッセージを条件付きで送信する工程を含むことを特徴とする請求項22乃至25の何れか1項に記載の方法。
【請求項27】
前記方法は、前記個別のジェスチャ・レコグナイザからの追加の情報を要求する工程をさらに有し、前記ソフトウェア・アプリケーションを実行する工程は、前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項22乃至26の何れか1項に記載の方法。
【請求項28】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項27に記載の方法。
【請求項29】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの1つ以上を含むことを特徴とする請求項22乃至28の何れか1項に記載の方法。
【請求項30】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項22乃至29の何れか1項に記載の方法。
【請求項31】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、命令と、
1つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項32】
タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、命令と、
1つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項33】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成され、前記1つ以上のプログラムは請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための命令を含むことを特徴とする電子デバイス。
【請求項34】
1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、前記1つ以上のプログラムは、タッチセンサ面を有する電子デバイスによって実行される場合に、請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行させる命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項35】
タッチセンサ面と、
請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための手段とを含むことを特徴とする電子デバイス。
【請求項36】
タッチセンサ面を有する電子デバイスに用いられる情報処理装置であって、
請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための手段とを含むことを特徴とする情報処理装置。
【請求項37】
1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された1つ以上のタッチを検出し、
前記1つ以上のタッチの個別のタッチを処理し、前記個別のタッチについて、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信し、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項38】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記処理ユニットは、
前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当て、
前記1つ以上のタッチの個別のタッチを処理することを、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別し、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行し、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別し、
受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することによって行うように構成されることを特徴とする請求項37に記載の電子デバイス。
【請求項39】
前記処理ユニットは、
前記1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記アプリケーション状態に従って1つ以上の値を判定するために前記割り当てられたデリゲートを実行し、
前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記1つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチのうちの1つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項38に記載の電子デバイス。
【請求項40】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にすることによって行われるように構成されることを特徴とする請求項39に記載の電子デバイス。
【請求項41】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、第2ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項39又は40に記載の電子デバイス。
【請求項42】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項39又は40に記載の電子デバイス。
【請求項43】
1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニットと、
前記1つ以上のイベント検知ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記1つ以上のイベント検知ユニットにより1つ以上のイベントを検出し、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項44】
前記1つ以上のイベント検知ユニットは1つ以上のタッチを検出するように構成されたタッチセンサ・ユニットを含み、前記1つ以上のイベントは前記1つ以上のタッチを含み、前記処理ユニットは個別のタッチを処理するように構成されることを特徴とする請求項43に記載の電子デバイス。
【請求項45】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値に従って前記個別のジェスチャ・レコグナイザが前記個別のタッチを条件付きで受信することを可能にするように構成されることを特徴とする請求項44に記載の電子デバイス。
【請求項46】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視することを可能にするように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項47】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止することによって、前記個別のタッチを処理するように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項48】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを特徴とする請求項44又は45に記載の電子デバイス。
【請求項49】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項50】
前記処理ユニットは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44乃至49の何れか1項に記載の電子デバイス。
【請求項51】
前記処理ユニットは、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44乃至49の何れか1項に記載の電子デバイス。
【請求項52】
前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記処理ユニットは、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てるように構成されることを特徴とする請求項43乃至51の何れか1項に記載の電子デバイス。
【請求項53】
1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
ソフトウェア・アプリケーションを実行し、
前記ソフトウェア・アプリケーションの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含み、
前記タッチセンサ面ユニットで受信された1つ以上のタッチを検出し、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項54】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項53に記載の電子デバイス。
【請求項55】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有することを特徴とする請求項54に記載の電子デバイス。
【請求項56】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項55に記載の電子デバイス。
【請求項57】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記処理ユニットは、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記1つ以上の個別の動作メッセージを条件付きで送信するように構成されることを特徴とする請求項53乃至56の何れか1項に記載の電子デバイス。
【請求項58】
前記処理ユニットは、
前記個別のジェスチャ・レコグナイザからの追加の情報を要求し、
前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項53乃至57の何れか1項に記載の電子デバイス。
【請求項59】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項58に記載の電子デバイス。
【請求項60】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの1つ以上を含むことを特徴とする請求項53乃至59の何れか1項に記載の電子デバイス。
【請求項61】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項53乃至60の何れか1項に記載の電子デバイス。
【請求項1】
1つ以上のイベント・センサを有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
1つ以上のイベントを検出する工程と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理する工程であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項2】
前記1つ以上のイベント・センサは1つ以上のタッチを検出するように構成されたタッチセンサ面を含み、前記1つ以上のイベントは前記1つ以上のタッチを含み、前記個別のイベントを処理する工程は個別のタッチを処理する工程を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記対応するデリゲートにより判定された前記1つ以上の値に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを条件付きで受信する工程をさらに有することを特徴とする請求項2に記載の方法。
【請求項4】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視する工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項5】
前記個別のタッチを処理する工程は、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止する工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項6】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項7】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項2又は3に記載の方法。
【請求項8】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項2乃至7の何れか1項に記載の方法。
【請求項9】
前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項2乃至7の何れか1項に記載の方法。
【請求項10】
前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記方法は、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てる工程を含むことを特徴とする請求項1乃至9の何れか1項に記載の方法。
【請求項11】
イベントを検出するための1つ以上のイベント・センサと、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のレコグナイザは個別のデリゲートを有する、命令と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項12】
1つ以上のイベント・センサを有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは個別のデリゲートを有する、命令と、
1つ以上のイベントを検出するための命令と、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理するための命令であって、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理するための命令と、前記アプリケーション状態に従って1つ以上の値を判定するために前記個別のデリゲートを実行するための命令と、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記個別のデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項13】
タッチセンサ面を有しており、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記複数のビューのうちの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、工程と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出する工程と、
前記1つ以上のタッチの個別のタッチを処理する工程であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行する工程と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項14】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記方法は、前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当てる工程を含み、
前記1つ以上のタッチの前記個別のタッチを処理する工程は、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別する工程と、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行する工程と、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別する工程と、
受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程とを含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程と、前記アプリケーション状態に従って1つ以上の値を判定するために前記割り当てられたデリゲートを実行する工程と、前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記1つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含み、
前記方法は、前記タッチのうちの1つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にする工程を含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にする工程を含むことを特徴とする請求項15に記載の方法。
【請求項18】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、第2ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項15乃至17の何れか1項に記載の方法。
【請求項19】
前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理する工程は、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理する工程を含むことを特徴とする請求項15乃至17の何れか1項に記載の方法。
【請求項20】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令と、
前記1つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項21】
タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記複数のビューのうちの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有する、命令と、
前記タッチセンサ面において、前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有する1つ以上のタッチを検出するための命令と、
前記タッチセンサ面における1つ以上のタッチの個別のタッチを処理するための命令であって、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行するための命令と、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するための命令と、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項22】
タッチセンサ面を有しており、ソフトウェア・アプリケーションを実行するように構成された電子デバイスにおいて、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示する工程であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、工程と、
1つ以上のタッチを検出する工程と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理する工程であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理する工程と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信する工程とを含む、工程と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行する工程とを有することを特徴とする方法。
【請求項23】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項22に記載の方法。
【請求項24】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有することを特徴とする請求項23に記載の方法。
【請求項25】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項24に記載の方法。
【請求項26】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記1つ以上の個別の動作メッセージを条件付きで送信する工程は、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記1つ以上の個別の動作メッセージを条件付きで送信する工程を含むことを特徴とする請求項22乃至25の何れか1項に記載の方法。
【請求項27】
前記方法は、前記個別のジェスチャ・レコグナイザからの追加の情報を要求する工程をさらに有し、前記ソフトウェア・アプリケーションを実行する工程は、前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行する工程を含むことを特徴とする請求項22乃至26の何れか1項に記載の方法。
【請求項28】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項27に記載の方法。
【請求項29】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの1つ以上を含むことを特徴とする請求項22乃至28の何れか1項に記載の方法。
【請求項30】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項22乃至29の何れか1項に記載の方法。
【請求項31】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成された1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、命令と、
1つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とする電子デバイス。
【請求項32】
タッチセンサ面を有する電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、ソフトウェア・アプリケーションを含み、
前記ソフトウェア・アプリケーションは、
前記ソフトウェア・アプリケーションの1つ以上のビューを表示するための命令であって、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含む、命令と、
1つ以上のタッチを検出するための命令と、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理するための命令であって、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理するための命令と、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信するための命令とを含む、命令と、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するための命令とを有することを特徴とするコンピュータ可読記憶媒体。
【請求項33】
タッチセンサ面と、
1つ以上のプロセッサと、
メモリと、
1つ以上のプログラムとを備える電子デバイスであって、
前記1つ以上のプログラムは前記メモリに格納され、前記1つ以上のプロセッサにより実行されるように構成され、前記1つ以上のプログラムは請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための命令を含むことを特徴とする電子デバイス。
【請求項34】
1つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、前記1つ以上のプログラムは、タッチセンサ面を有する電子デバイスによって実行される場合に、請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行させる命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項35】
タッチセンサ面と、
請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための手段とを含むことを特徴とする電子デバイス。
【請求項36】
タッチセンサ面を有する電子デバイスに用いられる情報処理装置であって、
請求項1乃至10、13乃至19及び22乃至30の何れか1項に記載の方法を実行するための手段とを含むことを特徴とする情報処理装置。
【請求項37】
1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューの個別のビューは1つ以上の個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記表示されたビューのうちの1つ以上のビューの範囲に入るタッチ位置をそれぞれが有し、前記タッチセンサ面において受信された1つ以上のタッチを検出し、
前記1つ以上のタッチの個別のタッチを処理し、前記個別のタッチについて、
前記アプリケーション状態に従って受信タッチ値を取得するために前記個別のジェスチャ・レコグナイザに対応する前記デリゲートを実行し、
前記受信タッチ値が所定の基準を満たす場合に前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信し、
前記個別のタッチに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項38】
前記複数のビューは複数のジェスチャ・レコグナイザを含み、
前記処理ユニットは、
前記複数のジェスチャ・レコグナイザの少なくとも部分集合に別個のデリゲートを割り当て、
前記1つ以上のタッチの個別のタッチを処理することを、
前記複数のジェスチャ・レコグナイザのうちの候補ジェスチャ・レコグナイザの集合を識別し、
割り当てられたデリゲートを有する候補ジェスチャ・レコグナイザ毎に、前記アプリケーション状態に従って受信タッチ値を取得するために前記割り当てられたデリゲートを実行し、
前記取得された受信タッチ値に従って前記候補ジェスチャ・レコグナイザの部分集合を含む1つ以上の受信ジェスチャ・レコグナイザを識別し、
受信ジェスチャ・レコグナイザのうちの1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することによって行うように構成されることを特徴とする請求項37に記載の電子デバイス。
【請求項39】
前記処理ユニットは、
前記1つ以上の受信ジェスチャ・レコグナイザの各ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って、デリゲートが割り当てられた個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理し、
前記アプリケーション状態に従って1つ以上の値を判定するために前記割り当てられたデリゲートを実行し、
前記個別のジェスチャ・レコグナイザによる前記個別のタッチの処理の結果に従うとともに前記割り当てられたデリゲートにより判定された前記1つ以上の値に従って前記個別のタッチに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチのうちの1つ以上に対応する、前記受信ジェスチャ・レコグナイザのうちの1つ以上から受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項38に記載の電子デバイス。
【請求項40】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記割り当てられたデリゲートにより前記状態遷移が可能にされたときに可能にすることによって行われるように構成されることを特徴とする請求項39に記載の電子デバイス。
【請求項41】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、第2ジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項39又は40に記載の電子デバイス。
【請求項42】
前記処理ユニットは、前記個別の受信ジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを、前記個別のジェスチャ・レコグナイザに割り当てられた前記デリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって行うように構成されることを特徴とする請求項39又は40に記載の電子デバイス。
【請求項43】
1つ以上のイベントを検知するように構成された1つ以上のイベント検知ユニットと、
前記1つ以上のイベント検知ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
複数のビューとソフトウェア・アプリケーションのアプリケーション状態とを含むソフトウェア・アプリケーションを実行し、
前記複数のビューのうちの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューの個別のビューは個別のジェスチャ・レコグナイザを含み、個別のジェスチャ・レコグナイザは対応するデリゲートを有しており、
前記1つ以上のイベント検知ユニットにより1つ以上のイベントを検出し、
前記個別のジェスチャ・レコグナイザを用いて前記1つ以上のイベントの個別のイベントを処理することを、
前記個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて前記個別のイベントを処理し、前記アプリケーション状態に従って1つ以上の値を判定するために前記対応するデリゲートを実行し、前記個別のジェスチャ・レコグナイザによる前記個別のイベントの処理の結果に従うとともに前記対応するデリゲートにより判定された前記1つ以上の値に従って、前記個別のイベントに対応する情報を前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記個別のイベントに対応する、前記個別のジェスチャ・レコグナイザから受信された情報に従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項44】
前記1つ以上のイベント検知ユニットは1つ以上のタッチを検出するように構成されたタッチセンサ・ユニットを含み、前記1つ以上のイベントは前記1つ以上のタッチを含み、前記処理ユニットは個別のタッチを処理するように構成されることを特徴とする請求項43に記載の電子デバイス。
【請求項45】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値に従って前記個別のジェスチャ・レコグナイザが前記個別のタッチを条件付きで受信することを可能にするように構成されることを特徴とする請求項44に記載の電子デバイス。
【請求項46】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを無視することを可能にするように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項47】
前記処理ユニットは、前記対応するデリゲートにより判定された前記1つ以上の値が所定のタッチ無視基準に合致する場合に、前記個別のジェスチャ・レコグナイザが前記個別のタッチを受信することを阻止することによって、前記個別のタッチを処理するように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項48】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理することを特徴とする請求項44又は45に記載の電子デバイス。
【請求項49】
前記処理ユニットは、前記検出されたタッチが前記個別のジェスチャ定義に整合している場合に、前記個別のジェスチャ・レコグナイザにおける対応する状態遷移を、前記対応するデリゲートにより前記状態遷移が可能にされたときに条件付きで可能にすることによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44又は45に記載の電子デバイス。
【請求項50】
前記処理ユニットは、第2ジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って前記第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44乃至49の何れか1項に記載の電子デバイス。
【請求項51】
前記処理ユニットは、前記個別のジェスチャ・レコグナイザに対応するデリゲートにより判定された1つ以上の値に従って第2ジェスチャ・レコグナイザにおいて前記個別のタッチを同時に処理することによって、前記個別のジェスチャ・レコグナイザにおいて前記個別のタッチを処理するように構成されることを特徴とする請求項44乃至49の何れか1項に記載の電子デバイス。
【請求項52】
前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記処理ユニットは、前記複数のジェスチャ・レコグナイザのうちの少なくとも部分集合に別個のデリゲートを割り当てるように構成されることを特徴とする請求項43乃至51の何れか1項に記載の電子デバイス。
【請求項53】
1つ以上のタッチを受信するように構成されたタッチセンサ面ユニットと、
前記タッチセンサ面ユニットに結合された処理ユニットとを備える電子デバイスであって、
前記処理ユニットは、
ソフトウェア・アプリケーションを実行し、
前記ソフトウェア・アプリケーションの1つ以上のビューの表示を可能にし、前記表示される1つ以上のビューは複数のジェスチャ・レコグナイザを含み、前記複数のジェスチャ・レコグナイザは、個別のジェスチャに応答して単一の動作メッセージを送信するように構成された少なくとも1つの離散ジェスチャ・レコグナイザと、認識された個別のジェスチャの認識された連続するサブイベントにおいて動作メッセージを送信するように構成された少なくとも1つの連続ジェスチャ・レコグナイザとを含み、
前記タッチセンサ面ユニットで受信された1つ以上のタッチを検出し、
前記ジェスチャ・レコグナイザのうちの1つ以上を使用しての前記タッチのそれぞれを処理することを、個別のジェスチャ・レコグナイザに対応する個別のジェスチャ定義に従って前記個別のジェスチャ・レコグナイザにおいて個別のタッチを処理し、前記個別のジェスチャ・レコグナイザにおける前記個別のタッチの処理の結果に従って1つ以上の個別の動作メッセージを前記ソフトウェア・アプリケーションに条件付きで送信することによって行い、
前記タッチの1つ以上に対応する前記ジェスチャ・レコグナイザの1つ以上から受信された1つ以上の動作メッセージに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする電子デバイス。
【請求項54】
各ジェスチャ・レコグナイザはジェスチャ・レコグナイザ状態の集合を有することを特徴とする請求項53に記載の電子デバイス。
【請求項55】
前記離散ジェスチャ・レコグナイザは、前記離散ジェスチャ・レコグナイザの初期状態に対応するジェスチャ可能状態と、前記個別のジェスチャの認識に対応するジェスチャ認識済状態と、前記離散ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第1集合を有し、
前記連続ジェスチャ・レコグナイザは、ジェスチャ可能状態と、前記個別のジェスチャの初期認識に対応するジェスチャ開始済状態と、前記個別のタッチの位置の個別の変化に対応するジェスチャ変更済状態と、前記認識された個別のジェスチャの完了に対応するジェスチャ終了済状態と、前記個別のジェスチャの認識の割り込みに対応するジェスチャ・キャンセル済状態と、前記連続ジェスチャ・レコグナイザが前記1つ以上のタッチを前記個別のジェスチャとして認識することに失敗したことに対応するジェスチャ失敗状態とを含むジェスチャ・レコグナイザ状態の第2集合を有することを特徴とする請求項54に記載の電子デバイス。
【請求項56】
前記ジェスチャ認識済状態及び前記ジェスチャ終了済状態は、同一のジェスチャ・レコグナイザ状態値を有することを特徴とする請求項55に記載の電子デバイス。
【請求項57】
前記ソフトウェア・アプリケーションはアプリケーション状態を有し、前記処理ユニットは、前記ソフトウェア・アプリケーションの前記アプリケーション状態にさらに従って前記1つ以上の個別の動作メッセージを条件付きで送信するように構成されることを特徴とする請求項53乃至56の何れか1項に記載の電子デバイス。
【請求項58】
前記処理ユニットは、
前記個別のジェスチャ・レコグナイザからの追加の情報を要求し、
前記追加の情報にさらに従って前記ソフトウェア・アプリケーションを実行するように構成されることを特徴とする請求項53乃至57の何れか1項に記載の電子デバイス。
【請求項59】
前記追加の情報は、前記個別のジェスチャ・レコグナイザにおいて処理された個別のタッチの個数及び位置を含むことを特徴とする請求項58に記載の電子デバイス。
【請求項60】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとのうちの1つ以上を含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとのうちの1つ以上を含むことを特徴とする請求項53乃至59の何れか1項に記載の電子デバイス。
【請求項61】
前記少なくとも1つの離散ジェスチャ・レコグナイザは、タップ・ジェスチャ・レコグナイザと、スワイプ・ジェスチャ・レコグナイザとを含み、前記少なくとも1つの連続ジェスチャ・レコグナイザは、長押しジェスチャ・レコグナイザと、ピンチ・ジェスチャ・レコグナイザと、パン・ジェスチャ・レコグナイザと、回転ジェスチャ・レコグナイザと、変換ジェスチャ・レコグナイザとを含むことを特徴とする請求項53乃至60の何れか1項に記載の電子デバイス。
【図1A】
【図1B】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図7A】
【図7B】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図1B】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図7A】
【図7B】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【公表番号】特表2013−518349(P2013−518349A)
【公表日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2012−551249(P2012−551249)
【出願日】平成23年1月26日(2011.1.26)
【国際出願番号】PCT/US2011/022516
【国際公開番号】WO2011/094267
【国際公開日】平成23年8月4日(2011.8.4)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】
【公表日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願日】平成23年1月26日(2011.1.26)
【国際出願番号】PCT/US2011/022516
【国際公開番号】WO2011/094267
【国際公開日】平成23年8月4日(2011.8.4)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】
[ Back to top ]