(58)【調査した分野】(Int.Cl.,DB名)
タッチ入力の前記シーケンスは、前記第2のソフトウェアアプリケーションの前記表示された1つ以上のビューのうちの少なくとも1つに少なくとも部分的に重なり合うことを特徴とする請求項1に記載の方法。
タッチ入力の前記シーケンスは、前記第2のソフトウェアアプリケーションの前記表示された1つ以上のビューのうちの少なくとも1つに少なくとも部分的に重なり合うことを特徴とする請求項12に記載の電子デバイス。
タッチ入力の前記シーケンスは、前記第2のソフトウェアアプリケーションの前記表示された1つ以上のビューのうちの少なくとも1つに少なくとも部分的に重なり合うことを特徴とする請求項17に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0015】
図中、同一の図中符号は対応する部分を示す。
【0016】
小型画面を備えた電子デバイス(例えば、スマートフォン及びタブレット)は、一般に、多数のアプリケーションがデバイス上で実行している可能性のある場合でも一度に単一のアプリケーションを表示する。これらのデバイスの多くは、タッチ入力としてジェスチャを受信するように構成されたタッチセンシティブディスプレイを有する。そのようなデバイスを使用する場合、ユーザは、非表示アプリケーション(例えば、バックグラウンドで実行するアプリケーションランチャソフトウェアアプリケーション等のバックグラウンドで実行しており且つ電子デバイスのディスプレイに現在表示されていないアプリケーション)により提供される動作を実行したいと思うだろう。非表示アプリケーションにより提供された動作を実行する既存の方法は、一般に、最初に非表示アプリケーションを表示し、次に現在表示されているアプリケーションにタッチ入力を提供することを必要とする。従って、既存の方法は更なるステップを必要とする。更にユーザは、非表示アプリケーションを見たくないかもしれないが、依然として非表示アプリケーションにより提供された動作を実行したいと思うだろう。以下に説明する実施形態において、非表示アプリケーションと対話する改善された方法は、タッチ入力を非表示アプリケーションに配信し、且つ非表示アプリケーションを表示することなく非表示アプリケーションによりタッチ入力を処理することにより実現される。従って、これらの方法は、ジェスチャ入力に基づいて非表示アプリケーションを制御し且つそれと対話する機能を提供する一方で、非表示アプリケーションとの対話を合理化することにより、非表示アプリケーションを表示するために余分な別個のステップは必要なくなる。
【0017】
更にいくつかの実施形態において、そのような電子デバイスは、複数のジェスチャ定義を含む少なくとも1つのジェスチャレコグナイザを有する。これにより、ジェスチャレコグナイザが種々の別個の動作モードで動作しやすくする。例えばデバイスは、通常の動作モード及びアクセシビリティ動作モード(例えば、視覚障碍者のための)を有してもよい。通常の動作モードにおいて、次のアプリケーションジェスチャは、アプリケーション間を移動するために使用され、3本の指の左スワイプジェスチャとして定義される。アクセシビリティ動作モードにおいて、3本の指の左スワイプジェスチャは、異なる機能を実行するために使用される。従って、3本の指の左スワイプとは異なるジェスチャは、次のアプリケーションジェスチャ(例えば、アクセシビリティ動作モードでの4本の指の左スワイプジェスチャ)に対応するためにアクセシビリティ動作モードで必要とされる。次のアプリケーションジェスチャと関連付けられた多数のジェスチャ定義を有することにより、デバイスは、現在の動作モードに依存して次のアプリケーションジェスチャのジェスチャ定義のうちの1つを選択できる。これにより、種々の動作モードでジェスチャレコグナイザを使用する際に柔軟性を提供する。いくつかの実施形態において、多数のジェスチャ定義を含む複数のジェスチャレコグナイザは、動作モードに依存して調整される(例えば、通常の動作モードで3本の指により実行されたジェスチャは、アクセシビリティ動作モードで4本の指により実行される)。
【0018】
以下において、
図1A〜
図1C及び
図2は、例示的なデバイスを説明する。
図3A〜
図3Fは、事象処理のための構成要素及びそのような構成要素の動作(例えば、事象情報の流れ)を説明する。
図4A〜
図4C及び
図5A〜
図5Cは、事象レコグナイザの動作を更に詳細に説明する。
図6A及び
図6Bは、事象認識方法を示すフローチャートである。
図7A〜
図7Sは、
図8A及び
図8B、
図9A〜
図9C、並びに
図10の事象認識方法を使用する動作を示す例示的なユーザインタフェースである。
図8A及び
図8Bは、開いている非表示アプリケーションのジェスチャハンドラにより事象情報を処理する事象認識方法を示すフローチャートである。
図9A〜
図9Cは、開いている非表示アプリケーション又は表示されたアプリケーションのジェスチャレコグナイザにより事象情報を条件付きで処理する事象認識方法を示すフローチャートである。
図10は、単一の事象レコグナイザの複数の事象定義のうちの1つを選択する事象認識方法を示すフローチャートである。
【0019】
実施形態を詳細に参照する。実施形態の例を添付の図面に示す。以下の詳細な説明において、本発明を完全に理解するために多くの特定の詳細を示す。しかし、本発明は、それら特定の詳細を含まずに実施されてもよいことが当業者には明らかとなるだろう。他の例において、実施形態の態様を不必要に曖昧にしないために、周知の方法、手順、構成要素、回路及びネットワークについては詳細に説明していない。
【0020】
本明細書において第1、第2等の用語が種々の要素を説明するために使用されてもよいが、それらの要素はこれらの用語により限定されるべきではないことが理解されるだろう。これらの用語は、1つの要素を別の要素と区別するためだけに使用される。例えば本発明の範囲から逸脱せずに、第1のコンタクトが第2のコンタクトと呼ばれてよく、同様に第2のコンタクトが第1のコンタクトと呼ばれてよい。第1のコンタクト及び第2のコンタクトは、双方ともコンタクトであるが同一のコンタクトではない。
【0021】
本明細書の本発明の説明において使用される専門用語は、特定の実施形態を説明するためだけのものであり、本発明を限定することを意図しない。本発明の説明及び添付の特許請求の範囲において使用されるように、特に指定のない限り、単数形は複数形も含むことを意図する。本明細書で使用されるような「及び/又は」という用語は、一覧表示された関連する項目の1つ以上のあらゆる全ての可能な組合せを参照し且つ含むことが理解されるだろう。「含む」及び/又は「備える」という用語は、本明細書で使用される場合、記載される特徴、数字、ステップ、動作、要素及び/又は構成要素の存在を特定するが、1つ以上の他の特徴、数字、ステップ、動作、要素、構成要素及び/又はそれらのセットの存在又は追加を除外しないことが更に理解されるだろう。
【0022】
本明細書で使用されるように、「場合」という用語は、状況に応じて「時」、あるいは「判定することに応答して」又は「検出することに応答して」を意味すると解釈されてもよい。同様に、「判定された場合」又は「[明示された状態又は事象]が検出された場合」という句は、状況に応じて「判定した時」又は「判定することに応答して」、あるいは「[明示された状態又は事象]を検出した時」又は「[明示された状態又は事象]を検出することに応答して」を意味すると解釈されてもよい。
【0023】
本明細書で使用されるように、「事象」(イベント)という用語は、デバイスの1つ以上のセンサにより検出された入力を示す。特に、「事象」という用語は、タッチセンシティブ面に対するタッチを含む。事象は1つ以上のサブ事象を含む。一般にサブ事象は、事象(例えば、タッチダウン、タッチの移動及びタッチのリフトオフはサブ事象でありうる)への変化を示す。1つ以上のサブ事象のシーケンスのサブ事象は、特に、キー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウスの移動、マウスボタンの押下、マウスボタンの解放、ペンスタイラスのタッチ、ペンスタイラスの移動、ペンスタイラスの解放、音声命令、検出された眼球運動、生体情報認識入力及び検出されたユーザの生理学的変化を含むがそれらに限定されない多くの形態を含んでもよい。事象が単一のサブ事象(例えば、デバイスの短い水平の動き)を含んでもよいため、本明細書で使用されるような「サブ事象」という用語は事象も示す。
【0024】
本明細書で使用されるように、「事象レコグナイザ」及び「ジェスチャレコグナイザ」という用語は、ジェスチャ又は他の事象(例えば、デバイスの動き)を認識できるレコグナイザを示すために同義で使用される。本明細書で使用されるように、「事象ハンドラ」及び「ジェスチャハンドラ」は、事象/サブ事象又はジェスチャの認識に応答して事前定義済みの動作のセット(例えば、データの更新、オブジェクトの更新及び/又はディスプレイの更新)を実行するハンドラを示すために同義で使用される。
【0025】
上述したように、入力装置としてタッチセンシティブ面を備えるいくつかのデバイスにおいて、タッチジェスチャの第1のセット(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプのうちの2つ以上)は、特定の状況(例えば、第1のアプリケーションの特定のモード)で適切な入力として認識され、タッチジェスチャの他の異なるセットは、他の状況(例えば、第1のアプリケーション内の異なるアプリケーション及び/あるいは異なるモード又は状況)で適切な入力として認識される。その結果、タッチジェスチャを認識し且つそれに応答するのに必要なソフトウェア及び論理は、複雑になり、アプリケーションが更新される度に又は新しいアプリケーションがコンピューティングデバイスに追加される度に改訂が必要となるだろう。本明細書で説明する実施形態は、事象及び/又はジェスチャ入力を処理する総合的なフレームワークを提供することでこれらの問題に対処する。
【0026】
以下に説明する実施形態において、タッチジェスチャは事象である。事前定義済みの事象、例えばアプリケーションの現在の状況での適切な入力に対応する事象を認識すると、事象に関する情報はアプリケーションに配信される。また、各事象はサブ事象のシーケンスとして定義される。マルチタッチ表示装置(本明細書では「画面」と呼ばれることが多い)又は他のマルチタッチセンシティブ面を有し、且つマルチタッチジェスチャを受け入れるデバイスにおいて、マルチタッチ事象を定義するサブ事象は、マルチタッチサブ事象(2本以上の指がデバイスのタッチセンシティブ面に同時に接触することを必要とする)を含んでもよい。例えば、マルチタッチセンシティブディスプレイを有するデバイスにおいて、サブ事象のそれぞれのマルチタッチシーケンスは、ユーザの指が最初に画面に触れる際に開始してもよい。1本以上の更なる指が後続して又は同時に画面に触れる際に更なるサブ事象が発生してもよく、画面に触れている全ての指が画面にわたり移動する際に更に他のサブ事象が発生してもよい。ユーザの指が最後に画面から離れた時にシーケンスは終了する。
【0027】
タッチセンシティブ面を有するデバイスにおいて実行するアプリケーションを制御するためにタッチジェスチャを使用する場合、タッチは時間的側面及び空間的側面の双方を有する。段階と呼ばれる時間的側面は、タッチがちょうど開始した時、タッチが移動しているかあるいは静止しているか及びタッチが終了する時、すなわち指が画面から離れる時を示す。タッチの空間的側面は、タッチが発生するビュー又はユーザインタフェースウィンドウのセットである。タッチが検出されるビュー又はウィンドウは、プログラム階層又はビュー階層内のプログラムレベルに対応してもよい。例えば、タッチが検出される最下位レベルのビューはヒットビューと呼ばれてもよく、適切な入力として認識される事象のセットは、タッチジェスチャを開始する初期タッチのヒットビューに少なくとも部分的に基づいて判定されてもよい。あるいは又は更に、事象は、プログラム階層における1つ以上のソフトウェアプログラム(すなわち、ソフトウェアアプリケーション)に少なくとも部分的に基づいて適切な入力として認識される。例えば、5本の指のピンチジェスチャは、5本の指のピンチジェスチャレコグナイザを有するアプリケーションランチャでは適切な入力として認識されるが、5本の指のピンチジェスチャレコグナイザを有さないウェブブラウザアプリケーションではそのように認識されない。
【0028】
図1A〜
図1Cは、いくつかの実施形態に係る電子デバイス102の種々の実施形態を示すブロック図である。電子デバイス102は、デスクトップコンピュータシステム、ラップトップコンピュータシステム、移動電話、スマートフォン、パーソナルデジタルアシスタント又はナビゲーションシステムを含むがそれに限定されないあらゆる電子デバイスであってもよい。更に電子デバイス102は、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイ(例えば、
図1Bのタッチセンシティブディスプレイ156)を備えたポータブル電子デバイス、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイを備えたコンピュータ、タッチセンシティブ面を備えたコンピュータ及びユーザインタフェースを示すように構成されたディスプレイ、あるいは消費者電子デバイス、移動電話、テレビゲームシステム、電子音楽プレーヤ、タブレットPC、電子書籍読取りシステム、電子書籍、PDA、電子手帳、電子メールデバイス、ラップトップ又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート家電等を含むがそれらに限定されない他のあらゆる形態のコンピューティングデバイスであってもよい。電子デバイス102はユーザインタフェース113を含む。
【0029】
いくつかの実施形態において、電子デバイス102は、タッチセンシティブディスプレイ156(
図1B)を含む。これらの実施形態において、ユーザインタフェース113は、電子デバイス102と対話するためにユーザにより使用されるオンスクリーンキーボード(不図示)を含んでもよい。いくつかの実施形態において、電子デバイス102は、1つ以上の入力装置128(例えば、キーボード、マウス、トラックボール、マイク、物理的なボタン、タッチパッド等)を更に備える。いくつかの実施形態において、タッチセンシティブディスプレイ156は、2つ以上の別個の同時の(又は部分的に同時の)タッチを検出する機能を有し、これらの実施形態において、ディスプレイ156は、本明細書でマルチタッチディスプレイ又はマルチタッチセンシティブディスプレイと呼ばれることもある。いくつかの実施形態において、1つ以上の入力装置128のキーボードは、電子デバイス102から独立し且つそれらとは別個であってもよい。例えばキーボードは、電子デバイス102に結合された有線又は無線のキーボードであってもよい。
【0030】
いくつかの実施形態において、電子デバイス102は、電子デバイス102に結合されるディスプレイ126及び1つ以上の入力装置128(例えば、キーボード、マウス、トラックボール、マイク、物理ボタン、タッチパッド、トラックパッド等)を含む。これらの実施形態において、入力装置128のうちの1つ以上は、オプションとして電子デバイス102から独立し且つそれとは別個であってもよい。例えば1つ以上の入力装置は、キーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの1つ以上を含んでもよく、それらのうちのいずれかは、オプションとして電子デバイスから独立してもよい。オプションとして、デバイス102は、1つ以上のセンサ116、例えば1つ以上の加速度計、ジャイロスコープ、GPSシステム、スピーカ、赤外線(IR)センサ、生体情報認識センサ、カメラ等を含んでもよい。尚、入力装置128又はセンサ116等の種々の例示的なデバイスの上記の説明は、本明細書で説明する実施形態の動作に対して全く重要ではなく、入力装置として本明細書で説明されるあらゆる入力装置又はセンサデバイスは、センサとしても適切に説明されてもよく、逆も同様である。いくつかの実施形態において、1つ以上のセンサ116により生成された信号は、事象を検出するために入力ソースとして使用される。
【0031】
いくつかの実施形態において、電子デバイス102は、電子デバイス102(
図1B)に結合されるタッチセンシティブディスプレイ156(すなわち、タッチセンシティブ面を有するディスプレイ)及び1つ以上の入力装置128を含む。いくつかの実施形態において、タッチセンシティブディスプレイ156は、2つ以上の別個の同時の(又は部分的に同時の)タッチを検出する機能を有し、これらの実施形態において、ディスプレイ156は、本明細書でマルチタッチディスプレイ又はマルチタッチセンシティブディスプレイと呼ばれることもある。
【0032】
本明細書で説明される電子デバイス102のいくつかの実施形態において、入力装置128は電子デバイス102に配設される。他の実施形態において、入力装置128のうちの1つ以上は、電子デバイス102から独立し且つそれとは別個である。例えば、入力装置128のうちの1つ以上は、ケーブル(例えば、USBケーブル)、あるいは無線接続(例えば、Bluetooth接続)により電子デバイス102に結合されてもよい。
【0033】
入力装置128を使用する場合又は電子デバイス102のタッチセンシティブディスプレイ156上でタッチジェスチャを実行する場合、ユーザは、電子デバイス102の1つ以上のCPU110により処理されるサブ事象のシーケンスを生成する。いくつかの実施形態において、電子デバイス102の1つ以上のCPU110は、事象を認識するようにサブ事象のシーケンスを処理する。
【0034】
一般に電子デバイス102は、1つ以上のシングルコア処理ユニット又はマルチコア処理ユニット(1つ又は複数の「CPU」)110及び1つ以上のネットワーク、あるいは他の通信インタフェース112を含む。電子デバイス102は、メモリ111及びこれらの構成要素を相互接続する1つ以上の通信バス115を含む。通信バス115は、システム構成要素(本明細書では不図示)間の通信を相互接続し且つ制御する回路網(チップセットと呼ばれることもある)を含んでもよい。上述したように、電子デバイス102は、ディスプレイ(ディスプレイ126又はマルチタッチディスプレイ156)を含むユーザインタフェース113を含む。また、一般に電子デバイス102は、入力装置128(例えば、キーボード、マウス、タッチセンシティブ面、キーパッド等)を含む。いくつかの実施形態において、入力装置128は、オンスクリーン入力装置(例えば、表示装置のタッチセンシティブ面)を含む。メモリ111は、DRAM、SRAM、DDR RAM又は他のランダムアクセス固体メモリ素子等の高速ランダムアクセスメモリを含んでもよく、1つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ素子又は他の不揮発性固体記憶装置等の不揮発性メモリを含んでもよい。メモリ111は、オプションとしてCPU110からリモートで配置された1つ以上の記憶装置を含んでもよい。メモリ111又はメモリ111内の不揮発性メモリ素子は、コンピュータ可読記憶媒体を含む。いくつかの実施形態において、メモリ111又はメモリ111内の不揮発性メモリ素子は、非一時的なコンピュータ可読記憶媒体を含む。いくつかの実施形態において、メモリ111(電子デバイス102の)又はメモリ111のコンピュータ可読記憶媒体は、以下のプログラム、モジュール及びデータ構造又はそれらのサブセットを格納する。
【0035】
・種々の基本システムサービスを処理し且つハードウェア依存タスクを実行する手順を含むオペレーティングシステム118。
・アプリケーションソフトウェア124の1つ以上のソフトウェアアプリケーションの挙動、あるいはタッチセンシティブディスプレイ156又は入力装置128からのデータを変更してアプリケーションソフトウェア124の1つ以上のソフトウェアアプリケーションのアクセシビリティ又はそこに表示されたコンテンツ(例えば、ウェブページ)へのアクセシビリティを改善するために使用されるアクセシビリティモジュール127(
図1C)(例えば、視覚障害者又は運動能力が限られた人のための)。
・電子デバイス102を1つ以上のそれぞれの通信インタフェース112(有線又は無線)、並びに1つ以上の通信ネットワーク、例えばインターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等を介して他のデバイスに接続するために使用される通信モジュール120。
・ディスプレイ126又はタッチセンシティブディスプレイ156にユーザインタフェースオブジェクトを含むユーザインタフェースを表示するために使用されるユーザインタフェースモジュール123(
図1C)。
・処理(例えば、ヒットビュー判定、スレッド管理及び/又は事象監視等)を制御するために使用される制御アプリケーション132(
図1C)。いくつかの実施形態において、制御アプリケーション132はランタイムアプリケーションを含み、他の実施形態において、ランタイムアプリケーションは制御アプリケーション132を含む。
・オペレーティングシステム118内の種々の別の実施形態において又はアプリケーションソフトウェア124で実現されてもよい事象配信システム122(電子デバイス102のそれぞれにおける)。しかし、いくつかの実施形態において、事象配信システム122のいくつかの態様がオペレーティングシステム118において実現されてもよいのに対し、他の態様はアプリケーションソフトウェア124で実現される。
・1つ以上のソフトウェアアプリケーション(例えば、各々が電子メールアプリケーション、ウェブブラウザアプリケーション、メモアプリケーション、テキストメッセージングアプリケーション等のうちの1つでありうる
図1Cのアプリケーション133−1、133−2及び133−3)を含むアプリケーションソフトウェア124。それぞれのソフトウェアアプリケーションは、一般に、少なくとも実行中にそれぞれのソフトウェアアプリケーション及びその構成要素(例えば、ジェスチャレコグナイザ)の状態を示すアプリケーション状態を有する。以下に説明するアプリケーション内部状態321(
図3D)を参照されたい。
・ソフトウェアアプリケーション及びそれらの構成要素(例えば、ジェスチャレコグナイザ及びデリゲート)の状態を示すアプリケーション状態と、タッチスクリーンディスプレイ156又はディスプレイ126の種々の領域を占有するアプリケーション、ビュー又は他の情報を示す表示状態と、デバイスの種々のセンサ116、入力装置128及び/又はタッチセンシティブディスプレイ156から取得された情報を含むセンサ状態と、デバイスの場所及び/又は姿勢に関する場所情報と、他の状態とのうちの1つ以上を含むデバイス/グローバル内部状態134(
図1C)。
【0036】
明細書及び特許請求の範囲において使用されるように、「開いているアプリケーション」という用語は、保存された状態の情報(例えば、デバイス/グローバル内部状態134及び/又はアプリケーション内部状態321(
図3D)の一部として)を含むソフトウェアアプリケーションを示す。開いているアプリケーションは、以下の種類のアプリケーションのうちのいずれか1つである。
【0037】
・ディスプレイ126又はタッチセンシティブディスプレイ156上に現在表示されているアクティブなアプリケーション(あるいは、対応するアプリケーションビューがディスプレイ上に現在表示されている)
・ディスプレイ126又はタッチセンシティブディスプレイ156上に現在表示されていないバックグラウンドアプリケーション(又はバックグラウンド処理)。しかし、対応するアプリケーションに対する1つ以上のアプリケーション処理(例えば、命令)は、1つ以上のプロセッサ110により処理されている(すなわち、実行している)
・現在実行していない中断されたアプリケーションであり、揮発性メモリ(例えば、DRAM、SRAM、DDR RAM又はメモリ111の他の揮発性ランダムアクセス固体メモリ素子)に格納される
・実行していない休止状態のアプリケーションであり、不揮発性メモリ(例えば、1つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ素子又はメモリ111の他の不揮発性ランダムアクセス固体メモリ素子)に格納される
【0038】
本明細書で使用されるように、「閉じられたアプリケーション」という用語は、保存された状態の情報を含まないソフトウェアアプリケーションを示す(例えば、閉じられたアプリケーションに対する状態情報は、デバイスのメモリに格納されない)。従って、アプリケーションを閉じることは、アプリケーションに対するアプリケーション処理を停止及び/又は除去すること、並びにアプリケーションに対する状態情報をデバイスのメモリから除去することを含む。一般に、第1のアプリケーションにある間に第2のアプリケーションを開いても第1のアプリケーションは閉じない。第2のアプリケーションが表示され且つ第1のアプリケーションの表示を中止する場合、表示された時にアクティブなアプリケーションであった第1のアプリケーションは、バックグラウンドアプリケーション、中断されたアプリケーション又は休止状態のアプリケーションになってもよいが、その状態情報がデバイスにより保存される間は開いているアプリケーションのままである。
【0039】
先に識別された要素の各々は、上述のメモリ素子のうちの1つ以上に格納されてもよく、本明細書で説明する機能を実行する命令のセットに対応する。命令のセットは、1つ以上のプロセッサ(例えば、1つ以上のCPU110)により実行される。先に識別されたモジュール又はプログラム(すなわち、命令のセット)が別個のソフトウェアプログラム、手順又はモジュールとして実現される必要はないため、これらのモジュールの種々のサブセットは、種々の実施形態において組み合わされてもよくあるいは再配置されてもよい。いくつかの実施形態において、メモリ111は、先に識別されたモジュール及びデータ構造のサブセットを格納してもよい。更にメモリ111は、上述されていない更なるモジュール及びデータ構造を格納してもよい。
【0040】
図2は、本発明のいくつかの実施形態に係る例示的な電子デバイス又は電子装置(例えば、デバイス102)の入出力処理スタック200を示す図である。デバイスのハードウェア(例えば、電子回路網)212は、入出力処理スタック200のベースレベルにある。ハードウェア212は、
図1A及び/又は
図1Bに示された構成要素等の種々のハードウェアインタフェース構成要素を含むことができる。ハードウェア212は、上述のセンサ116のうちの1つ以上を更に含むことができる。入出力処理スタック200の他の要素(202〜210)のうちの少なくともいくつかは、ハードウェア212から受信した入力を処理し且つハードウェアユーザインタフェース(例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータ等のうちの1つ以上)を介して示される種々の出力を生成するソフトウェア手順又はソフトウェア手順の一部である。
【0041】
ドライバ又はドライバ210のセットはハードウェア212と通信する。ドライバ210は、ハードウェア212から入力データを受信し、且つ受信した入力データを処理できる。コアオペレーティングシステム(「OS」)208はドライバ210と通信できる。コアOS208は、ドライバ210から受信した生の入力データを処理できる。いくつかの実施形態において、ドライバ210はコアOS208の一部であると考えることができる。
【0042】
OSアプリケーションプログラミングインタフェース(「OS API)」206のセットは、コアOS208と通信するソフトウェア手順である。いくつかの実施形態において、API206は、デバイスのオペレーティングシステムに含まれるが、コアOS208の上のレベルにある。API206は、本明細書で説明する電子デバイス又は電子装置上で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース(UI)API204はOS API206を利用できる。デバイス上で実行するアプリケーションソフトウェア(「アプリケーション」)202は、ユーザと通信するためにUI API204を利用できる。その結果、UI API204は、より低いレベルの要素と通信でき、最終的にはマルチタッチディスプレイ156等の種々のユーザインタフェースハードウェアと通信する。いくつかの実施形態において、アプリケーションソフトウェア202は、アプリケーションソフトウェア124(
図1A)のアプリケーションを含む。
【0043】
入出力処理スタック200の各層は、必ずしも必要とされない入出力処理スタック200より下の層を利用できる。例えば、いくつかの実施形態において、アプリケーション202はOS API206と直接通信してもよい。一般にOS API層206以上の層は、専用であると考えられるため、コアOS208、ドライバ210又はハードウェア212に直接アクセスしなくてもよい。アプリケーション202及びUI API204の層は、通常、OS API206に対して直接呼び出すことにより、コアOS208、ドライバ210及びハードウェア212の層にアクセスする。
【0044】
換言すると、電子デバイス102の1つ以上のハードウェア要素212及びデバイス上で実行するソフトウェアは、入力装置128のうちの1つ以上及び/又はタッチセンシティブディスプレイ156で入力事象(ジェスチャのサブ事象に対応してもよい)を検出し、入力事象がアプリケーション124に配信される事象に対応するか及びいつ対応するかを判定するために現在アクティブな事象レコグナイザのセットにより使用された種々のデータ構造(デバイス102のメモリに格納された)を生成又は更新する。事象認識の技法、装置及びコンピュータプログラムの実施形態を以下に更に詳細に説明する。
【0045】
図3Aは、本例では最も外側のビュー302に表示された検索プログラムである例示的なビュー階層300を示す。最も外側のビュー302は、一般に、ユーザが直接対話してもよいユーザインタフェース全体を含み、例えば以下のような従属ビューを含む。
【0046】
・検索結果をグループ化し且つ縦方向にスクロール可能な検索結果パネル304
・文字入力を受け入れる検索フィールド306
・迅速にアクセスするためにアプリケーションをグループ化するホームキー列310
【0047】
本例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層300におけるビューレベルの数は、階層の種々の分岐で異なってもよく、1つ以上の従属ビューは下位レベルの従属ビューを有し、1つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。引き続き
図3Aに示された例を参照すると、検索結果パネル304は、検索結果毎に別個の従属ビュー305(パネル304に従属する)を含む。本明細書において、この例は、マップビュー305と呼ばれた従属ビューにおいて1つの検索結果を示す。検索フィールド306は、本明細書でクリアコンテンツアイコンビュー307と呼ばれる従属ビューを含む。クリアコンテンツアイコンビュー307は、ユーザがビューのクリアコンテンツアイコン307上で特定の動作(例えば、シングルタッチジェスチャ又はシングルタップジェスチャ)を実行する場合に検索フィールドのコンテンツをクリアする。ホームキー列310は、それぞれ、連絡先アプリケーション、電子メールアプリケーション、ウェブブラウザ及びiPodミュージックインタフェースに対応する従属ビュー310−1、310−2、310−3及び310−4を含む。
【0048】
タッチサブ事象301−1は最も外側のビュー302示される。検索結果パネル304及びマップビュー305の双方の上にタッチサブ事象301−1の場所が与えられたとすると、タッチサブ事象は、それぞれ、301−2及び301−3としてこれらのビュー上に更に示される。タッチサブ事象の能動的に関わるビューは、ビュー検索結果パネル304、マップビュー305及び最も外側のビュー302を含む。
図3B及び
図3Cを参照して、サブ事象配信及び能動的に関わるビューに関する更なる情報を以下に提供する。
【0049】
ビュー(及び対応するプログラムレベル)はネストされる。換言すると、ビューは他のビューを含むことができる。その結果、第1のビューと関連付けられたソフトウェア要素(例えば、事象レコグナイザ)は、第1のビュー内のビューと関連付けられた1つ以上のソフトウェア要素を含むことができるか、あるいはそれにリンクされる。アプリケーションと関連付けられるビューもあれば、高レベルのOS要素、例えばグラフィカルユーザインタフェース、ウィンドウマネージャ等と関連付けられるビューもある。
後続の説明を簡略化するために、一般にビュー及びビュー階層のみを参照するが、いくつかの実施形態において、方法は、複数のプログラム層を有するプログラム階層及び/又はビュー階層で動作してもよいことが理解されるべきである。いくつかの実施形態において、いくつかのビューは他のOS要素と関連付けられる。いくつかの実施形態において、ビュー階層は、複数のソフトウェアアプリケーションからのビューを含む。例えばビュー階層は、アプリケーションランチャからのビュー(例えば、ホーム画面)及びウェブブラウザアプリケーションからのビュー(例えば、ウェブページのコンテンツを含むビュー)を含んでもよい。
【0050】
プログラム階層は、階層における1つ以上のソフトウェア要素又はソフトウェアアプリケーションを含む。後続の説明を簡略化するために、一般にビュー及びビュー階層のみを参照するが、いくつかの実施形態において、方法は、複数のプログラム層を有するプログラム階層及び/又はビュー階層で動作してもよいことが理解されるべきである。
【0051】
図3B及び
図3Cは、事象レコグナイザに関連した例示的な方法及び構造を示す。
図3Bは、事象ハンドラがビューの階層内の特定のビューと関連付けられる場合の事象処理の方法及びデータ構造を示す。
図3Cは、事象ハンドラがプログラムレベルの階層内の特定のレベルと関連付けられる場合の事象処理の方法及びデータ構造を示す。事象レコグナイザグローバルメソッド312及び350は、それぞれ、ヒットビュー判定モジュール314及びヒットレベル判定モジュール352と、アクティブ事象レコグナイザ判定モジュール316及び354と、サブ事象配信モジュール318及び356とを含む。
【0052】
いくつかの実施形態において、電子デバイス102は、事象レコグナイザグローバルメソッド312及び350のうちの1つ以上を含む。いくつかの実施形態において、電子デバイス102は、ヒットビュー判定モジュール314及びヒットレベル判定モジュール352のうちの1つ以上を含む。いくつかの実施形態において、電子デバイス102は、アクティブ事象レコグナイザ判定モジュール316及び354のうちの1つ以上を含む。いくつかの実施形態において、電子デバイス102は、サブ事象配信モジュール318及び356のうちの1つ以上を含む。いくつかの実施形態において、これらの方法及びモジュールのうちの1つ以上は、より少ない方法及びモジュール又はより多い方法及びモジュールに含まれる。例えば、いくつかの実施形態において、電子デバイス102は、ヒットビュー判定モジュール314及びヒットレベル判定モジュール352の機能性を含むヒットビュー/レベル判定モジュールを含む。いくつかの実施形態において、電子デバイス102は、アクティブ事象レコグナイザ判定モジュール316及び354の機能性を含むアクティブ事象レコグナイザ判定モジュールを含む。
【0053】
ヒットビュー判定モジュール314及びヒットレベル判定モジュール352は、それぞれ、1つ以上のビュー(例えば3つの主な分岐を有する
図3Aに示された例示的なビュー階層300)及び/又はサブ事象に対応するプログラム階層における1つ以上のソフトウェア要素(例えば、
図1Cのアプリケーション133のうちの1つ以上)内でサブ事象が発生した場所を判定するソフトウェア手順を提供する。
【0054】
図3Bのヒットビュー判定モジュール314は、最も外側のビュー302、検索結果(マップビュー305)及び検索結果パネルビュー304上に301−1として示されたユーザタッチ等のサブ事象に関連した情報を受信する。ヒットビュー判定モジュール314は、サブ事象を処理すべき階層における最下位レベルのビューとしてヒットビューを識別する。殆どの状況において、ヒットビューは、初期サブ事象(すなわち、事象又は潜在的な事象を形成するサブ事象のシーケンスの第1のサブ事象)が発生する最下位レベルのビューである。いくつかの実施形態において、ヒットビューは、識別されると、ヒットビューが識別された同一のタッチ又は入力ソースに関連した全てのサブ事象を受信する。いくつかの実施形態において、1つ以上の他のビュー(例えば、デフォルト又は事前定義済みのビュー)は、ヒットビューが受信するサブ事象のうちの少なくともいくつかを受信する。
【0055】
いくつかの実施形態において、
図3Cのヒットレベル判定モジュール352は、類似の処理を利用してもよい。例えば、いくつかの実施形態において、ヒットレベル判定モジュール352は、サブ事象を処理すべきプログラム階層における最下位レベルであるヒットレベル(又はプログラム階層における最下位プログラムレベルのソフトウェアアプリケーション)を識別する。いくつかの実施形態において、ヒットレベルが識別されると、ヒットレベル又はヒットレベルのソフトウェアアプリケーションは、ヒットレベルが識別された同一のタッチ又は入力ソースに関連した全てのサブ事象を受信する。いくつかの実施形態において、1つ以上の他のレベル又はソフトウェアアプリケーション(例えば、デフォルト又は事前定義済みのソフトウェアアプリケーション)は、ヒットビューが受信するサブ事象のうちの少なくともいくつかを受信する。
【0056】
事象レコグナイザグローバルメソッド312及び350のアクティブ事象レコグナイザ判定モジュール316及び354は、それぞれ、ビュー階層及び/又はプログラム階層内の1つ又は複数のビューがサブ事象の特定のシーケンスを受信すべきかを判定する。
図3Aは、サブ事象301を受信する例示的なアクティブなビュー302、304及び305のセットを示す。
図3Aの例において、アクティブ事象レコグナイザ判定モジュール316は、最も外側のビュー302、検索結果パネル304及びマップビュー305がサブ事象301により示されたタッチの物理的位置を含むため、これらのビューが能動的に関わるビューであると判定するだろう。尚、タッチサブ事象301がマップビュー305と関連付けられた領域に全体的に限定されたとしても、検索結果パネル304及び最も外側のビュー302は、マップビュー305の祖先であるため、能動的に関わるビューに依然として存在するだろう。
【0057】
いくつかの実施形態において、アクティブ事象レコグナイザ判定モジュール316及び354は類似の処理を利用してもよい。
図3Aの例において、マップアプリケーションのビューが表示され且つ/あるいはサブ事象301により示されたタッチの物理的な場所を含むため、アクティブ事象レコグナイザ判定モジュール350は、マップアプリケーションが能動的に関わると判定する。尚、タッチサブ事象301がマップアプリケーションと関連付けられた領域に全体的に制限される場合でも、プログラム階層における他のアプリケーションは、能動的に関わるアプリケーション(又は能動的に関わるプログラムレベルのアプリケーション)のままであってもよい。
【0058】
サブ事象配信モジュール318は、能動的に関わるビューに対する事象レコグナイザにサブ事象を配信する。
図3Aの例を使用して、タッチマーク301−1、301−2及び301−3によりユーザのタッチを階層の種々のビューに示す。いくつかの実施形態において、このユーザのタッチを示すサブ事象データは、能動的に関わるビュー、すなわち最上位レベルのビュー302、検索結果パネル304及びマップビュー305において、サブ事象配信モジュール318により事象レコグナイザに配信される。また、ビューの事象レコグナイザは、ビュー内で開始する事象の後続のサブ事象を受信できる(例えば、初期サブ事象がビュー内で発生する場合)。換言すると、ビューは、ビューの外側に継続する場合でも、ビューで開始するユーザ対話と関連付けられたサブ事象を受信できる。
【0059】
いくつかの実施形態において、サブ事象配信モジュール356は、サブ事象配信モジュール318により使用された処理に類似する処理において、能動的に関わるプログラムレベルに対する事象レコグナイザにサブ事象を配信する。例えばサブ事象配信モジュール356は、能動的に関わるアプリケーションに対する事象レコグナイザにサブ事象を配信する。
図3Aの例を使用して、ユーザのタッチ301は、能動的に関わるビュー(例えば、プログラム階層におけるマップアプリケーション及び他のあらゆる能動的に関わるアプリケーション)において、サブ事象配信モジュール356により事象レコグナイザに配信される。いくつかの実施形態において、デフォルト又は事前定義済みのソフトウェアアプリケーションは、デフォルトによりプログラム階層に含まれる。
【0060】
いくつかの実施形態において、別個の事象レコグナイザ構造320又は360は、能動的に関わる事象レコグナイザ毎に生成され且つデバイスのメモリに格納される。一般に事象レコグナイザ構造320及び360は、それぞれ、事象レコグナイザ状態334、374(
図4A及び
図4Bを参照する際に以下に更に詳細に説明する)、それぞれが状態遷移マシン340、380を有する事象レコグナイザ専用コード338、378を含む。事象レコグナイザ構造320はビュー階層基準336を更に含み、事象レコグナイザ構造360はプログラム階層基準376を含む。特定の事象レコグナイザの各例は、厳密に1つのビュー又はプログラムレベルを参照する。ビュー階層基準336又はプログラム階層基準376(特定の事象レコグナイザに対する)は、各事象レコグナイザに論理的に結合されるビュー又はプログラムレベルを明らかにするために使用される。
【0061】
ビューメタデータ341及びレベルメタデータ381は、それぞれ、ビュー又はレベルに関するデータを含んでもよい。ビューメタデータ又はレベルメタデータは、事象レコグナイザへのサブ事象配信に影響を及ぼす可能性のある少なくとも以下のプロパティを含んでもよい。
【0062】
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベル及びビュー又はプログラム階層における祖先と関連付けられた事象レコグナイザへのサブ事象配信を防止する停止プロパティ342、382。
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベルと関連付けられた事象レコグナイザへのサブ事象配信を防止するが、ビュー又はプログラム階層における祖先へのサブ事象配信を可能にするスキッププロパティ343、383。
・ビューに対して設定された場合、ビューがヒットビューでない限り、ビューと関連付けられた事象レコグナイザへのサブ事象の配信を防止するNoHitスキッププロパティ344、384。上述したように、ヒットビュー判定モジュール314は、サブ事象を処理すべき階層における最下位レベルのビューとしてヒットビュー(又はヒットレベル判定モジュール352の場合はヒットレベル)を識別する。
【0063】
事象レコグナイザ構造320及び360は、それぞれ、メタデータ322、362を含んでもよい。いくつかの実施形態において、メタデータ322、362は、事象配信システムが能動的に関わる事象レコグナイザへのサブ事象配信を実行すべき方法を示す設定可能なプロパティ、フラグ及びリストを含む。いくつかの実施形態において、メタデータ322、362は、事象レコグナイザが互いに対話してもよい方法を示す設定可能なプロパティ、フラグ及びリストを含んでもよい。いくつかの実施形態において、メタデータ322、362は、ビュー又はプログラム階層における変動レベルにサブ事象が配信されるかを示す設定可能なプロパティ、フラグ及びリストを含んでもよい。いくつかの実施形態において、事象レコグナイザメタデータ322、362とビューメタデータ又はレベルメタデータ(341、381のそれぞれ)との組合せは、双方とも、a)能動的に関わる事象レコグナイザへのサブ事象配信を実行し、b)事象レコグナイザが互いに対話してもよい方法を示し、且つc)サブ事象がビュー又はプログラム階層において種々のレベルに配信されるか及び配信される時を示すように事象配信システムを設定するために使用される。
【0064】
尚、いくつかの実施形態において、各事象レコグナイザは、事象レコグナイザの構造320、360のフィールドにより規定されたように、事象認識動作333、373をそれぞれの対象335、375に送出する。動作を対象に送出することは、サブ事象をそれぞれのヒットビュー又はヒットレベルに送出(及び遅延送出)することとは異なる。
【0065】
対応する事象レコグナイザのそれぞれの事象レコグナイザ構造320、360に格納されたメタデータプロパティは、以下のうちの1つ以上を含む。
【0066】
・事象レコグナイザに対して設定された場合、事象レコグナイザにより事象を認識すると、事象配信システムが、能動的に関わるビュー又はプログラムレベルの他のあらゆる事象レコグナイザ(例外リスト326、366に列挙された他のあらゆる事象レコグナイザを除く)へのサブ事象の配信を停止すべきことを示す排他的フラグ324、364。対応する排他的フラグ324又は364により示されたように、サブ事象を受信することにより特定の事象レコグナイザが排他的状態になる場合、後続のサブ事象は、排他的状態の事象レコグナイザ(及び例外リスト326、366に列挙された他のあらゆる事象レコグナイザ)にのみ配信される。
・いくつかの事象レコグナイザ構造320、360は、排他的例外リスト326、366を含んでもよい。このリスト326、366は、各事象レコグナイザに対する事象レコグナイザ構造320、360に含まれる場合、各事象レコグナイザが排他的状態になった後もサブ事象を受信し続ける事象レコグナイザのセットを示す。例えば、シングルタップ事象に対する事象レコグナイザが排他的状態になり、且つ現在含まれているビューがダブルタップ事象に対する事象レコグナイザを含む場合、リスト320、360は、シングルタップ事象が検出された後もダブルタップ事象を認識できるように、ダブルタップ事象レコグナイザを列挙するだろう。従って、排他的例外リスト326、366により、事象レコグナイザは、サブ事象の共通のシーケンスを共有する種々の事象を認識できる。例えばシングルタップ事象認識は、他の事象レコグナイザによるダブルタップ事象又はトリプルタップ事象の後続認識を排除しない。
・いくつかの事象レコグナイザ構造320、360は、待ちリスト327、367を含んでもよい。このリスト327、367は、各事象レコグナイザに対する事象レコグナイザ構造320、360に含まれる場合、各事象レコグナイザがそれぞれの事象を認識できる前に事象不可能状態又は事象取り消し状態になるべきである事象レコグナイザのセットを示す。実質的に、列挙された事象レコグナイザは、事象を認識するための優先順位が待ちリスト327、367を含む事象レコグナイザより高い。
・事象レコグナイザに対して設定された場合、サブ事象のシーケンスがこの事象レコグナイザの事象の種類に対応しないと判定されるまで、事象レコグナイザがサブ事象(タッチ開始サブ事象又はフィンガーダウンサブ事象及び後続の事象を含む)を事象レコグナイザのそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ開始済フラグ328、368。このフラグは、ジェスチャが認識される場合にヒットビュー又はヒットレベルがいずれかのサブ事象を参照するのを防止するために使用可能である。事象レコグナイザが事象を認識できない場合、タッチ開始済サブ事象(及びサブ後続タッチ終了サブ事象)は、ヒットビュー又はヒットレベルに配信される。一例において、そのようなサブ事象をヒットビュー又はヒットレベルに配信することにより、ユーザインタフェースは、オブジェクトと関連付けられた動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
・事象レコグナイザに対して設定された場合、サブ事象のシーケンスがこの事象レコグナイザの事象の種類に対応しないと判定されるまで、事象レコグナイザがサブ事象(例えば、タッチ終了サブ事象)を事象レコグナイザのそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ終了フラグ330、370。これは、ジェスチャが後で認識される場合にヒットビュー又はヒットレベルがタッチ終了サブ事象に影響を及ぼすのを防止するために使用可能である。タッチ終了サブ事象が送出されない限り、取り消されたタッチをヒットビュー又はヒットレベルに送出できる。事象が認識される場合、アプリケーションにより対応する動作が実行され、タッチ終了サブ事象はヒットビュー又はヒットレベルに配信される。
・事象レコグナイザに対して設定された場合、サブ事象のシーケンスがこの事象レコグナイザの事象の種類に対応しないと判定されている際、事象レコグナイザにタッチ取り消し又は入力取り消しを事象レコグナイザのそれぞれのヒットビュー又はヒットレベルに送出させるタッチ取り消しフラグ332、372。ヒットビュー又はヒットレベルに送出されたタッチ取り消し又は入力取り消しは、先行するサブ事象(例えば、タッチ開始済サブ事象)が取り消されたことを示す。タッチ取り消し又は入力取り消しにより、入力ソースハンドラの状態(
図4Bを参照)は入力シーケンス取り消し済状態460(以下に説明する)になってもよい。
【0067】
いくつかの実施形態において、非排他的事象レコグナイザは、例外リスト326、366を更に使用できる。特に、非排他的事象レコグナイザが事象を認識する場合、後続のサブ事象は、事象を認識した事象レコグナイザの例外リスト326、366に列挙された排他的事象レコグナイザを除いて、現在アクティブなビューと関連付けられた排他的事象レコグナイザに配信されない。
【0068】
いくつかの実施形態において、事象レコグナイザは、望ましくないサブ事象がヒットビューに配信されるのを防止するために、遅延タッチ終了フラグと組み合わせてタッチ取り消しフラグを利用するように構成されてもよい。例えば、シングルタップジェスチャの定義とダブルタップジェスチャの前半とは同一である。シングルタップ事象レコグナイザがシングルタップを正常に認識すると、望ましくない動作が起こるだろう。遅延タッチ終了フラグが設定される場合、シングルタップ事象が認識されるまで、シングルタップ事象レコグナイザがサブ事象をヒットビューに送出するのを防止する。また、シングルタップ事象レコグナイザの待ちリストがダブルタップ事象レコグナイザを識別できるため、ダブルタップ事象レコグナイザが事象不可能状態になるまで、シングルタップ事象レコグナイザがシングルタップを認識するのを防止する。待ちリストを使用することにより、ダブルタップジェスチャが実行される際にシングルタップと関連付けられた動作の実行を回避する。その代わり、ダブルタップ事象の認識に応答して、ダブルタップと関連付けられた動作のみが実行される。
【0069】
タッチセンシティブ面上のユーザタッチの形態を特に参照すると、上述したように、タッチ及びユーザジェスチャは瞬時でなくてもよい動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含んでよい。しかし、タッチデータ構造は、特定の時間のタッチの状態(すなわち、より一般的にはあらゆる入力ソースの状態)を定義する。従って、タッチデータ構造に格納された値がシングルタッチのコースを変更する可能性があるため、異なる時点のシングルタッチの状態をアプリケーションに搬送できるようになる。
【0070】
各タッチデータ構造は種々のフィールドを含むことができる。いくつかの実施形態において、タッチデータ構造は、少なくとも
図3Bのタッチ専用フィールド339又は
図3Cの入力ソース専用フィールド379に対応するデータを含んでもよい。
【0071】
例えば、
図3Bの「ビューに対する第1のタッチ」フィールド345(
図3Cの「レベルに対する第1のタッチ」385)は、タッチデータ構造が特定のビューに対する第1のタッチを定義するかを示すことができる(ビューを実現するソフトウェア要素がインスタンス化されたため)。「タイムスタンプ」フィールド346、386は、タッチデータ構造が関連する特定の時間を示すことができる。
【0072】
オプションとして、「情報」フィールド347、387は、タッチが基本的なジェスチャであるかを示すために使用可能である。例えば「情報」フィールド347、387は、タッチがスワイプであるか及びスワイプである場合にはスワイプが向けられる方向を示すことができる。スワイプとは、1本以上の指を直線方向に迅速にドラッグすることである。APIの実現例(以下に説明する)は、タッチがスワイプであるかを判定し且つその情報を「情報」フィールド347、387を介してアプリケーションに渡すことにより、タッチがスワイプであった場合に必要であったと考えられるあるデータ処理のアプリケーションを減少させることができる。
【0073】
オプションとして、
図3Bの「タップカウント」フィールド348(
図3Cの「事象カウント」フィールド388)は、初期タッチの位置で順次実行されたタップの数を示すことができる。タップは、特定の位置でタッチセンシティブパネルに対して指を迅速に押下し且つ離すものとして定義される。指がパネルの同一の位置で迅速に継続して再度押下され且つ解放される場合、複数の連続したタップが発生する。事象配信システム122は、タップをカウントし、且つ「タップカウント」フィールド348を介してこの情報をアプリケーションに中継できる。同一の場所における多数のタップは、有用であり且つタッチ対応インタフェースに対する覚えやすいコマンドであると考えられることもある。従って、タップをカウントすることにより、事象配信システム122は、アプリケーションからのあるデータ処理を再度減少させることができる。
【0074】
「段階」フィールド349、389は、タッチジェスチャが現在ある特定の段階を示すことができる。段階フィールド349、389は、タッチデータ構造が先行するタッチデータ構造により参照されていない新しいタッチを定義することを示すことができる「タッチ段階開始済」等の種々の値を有することができる。「タッチ段階移動済」値は、定義されているタッチが従来の位置から移動したことを示すことができる。「タッチ段階静止」値は、タッチが同一の位置に留まっていることを示すことができる。「タッチ段階終了済」値は、タッチが終了した(例えば、ユーザがマルチタッチディスプレイの表面から指を離した)ことを示すことができる。「タッチ段階取り消し済」値は、タッチがデバイスにより取り消されたことを示すことができる。取り消されたタッチは、ユーザにより必ずしも終了されなくてもよいが、デバイスが無視することを決定したタッチである。例えばデバイスは、タッチが意図せず(すなわち、ポータブルマルチタッチ対応デバイスをポケットに入れた結果)生成されていると判定し、且つその理由によりタッチを無視できる。「段階フィールド」349、389の各値は整数であってよい。
【0075】
従って、各タッチデータ構造は、特定の時間にそれぞれのタッチ(又は他の入力ソース)で発生していること(例えば、タッチが静止しているか、移動しているか等)及びタッチと関連付けられた他の情報(位置等)を定義できる。従って、各タッチデータ構造は、特定の瞬間の特定のタッチの状態を定義できる。同一の時間を参照する1つ以上のタッチデータ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義できるタッチ事象データ構造に追加される(上述したように、いくつかのタッチデータ構造は、終了し且つもはや受信されていないタッチを更に参照してもよい)。多数のタッチ事象データ構造は、ビューで発生しているタッチを示す連続した情報をソフトウェアに提供するために、時間が経つにつれビューを実現するソフトウェアに送出される。
【0076】
図3Dは、いくつかの実施形態に係る事象処理のための例示的な構成要素(例えば、事象処理構成要素390)を示すブロック図である。いくつかの実施形態において、メモリ111(
図1A)は、事象レコグナイザグローバルメソッド312及び1つ以上のアプリケーション(例えば、133−1〜133−3)を含む。
【0077】
いくつかの実施形態において、事象レコグナイザグローバルメソッド312は、事象モニタ311と、ヒットビュー判定モジュール314と、アクティブ事象レコグナイザ判定モジュール316と、事象ディスパッチャモジュール315とを含む。いくつかの実施形態において、事象レコグナイザグローバルメソッド312は、事象配信システム122(
図1A)内に配置される。いくつかの実施形態において、事象レコグナイザグローバルメソッド312は、オペレーティングシステム118(
図1A)において実現される。あるいは、事象レコグナイザグローバルメソッド312は、それぞれのアプリケーション133−1において実現される。更に他の実施形態において、事象レコグナイザグローバルメソッド312は、スタンドアロンモジュール又はメモリ111に格納された別のモジュール(例えば、接触/動きモジュール(不図示))の一部として実現される。
【0078】
事象モニタ311は、1つ以上のセンサ116、タッチセンシティブディスプレイ156及び/又は1つ以上の入力装置128から事象情報を受信する。事象情報は、事象(例えば、マルチタッチジェスチャ又はデバイス102の動きの一部であるタッチセンシティブディスプレイ156に対するユーザタッチ)及び/又はサブ事象(例えば、タッチセンシティブディスプレイ156にわたるタッチの移動)に関する情報を含む。例えば、タッチ事象に対する事象情報は、タッチの場所及びタイムスタンプのうちの1つ以上を含む。同様に、スワイプ事象に対する事象情報は、スワイプの場所、タイムスタンプ、方向及び速度のうちの2つ以上を含む。センサ116、タッチセンシティブディスプレイ156及び入力装置128は、直接又は事象情報を検索及び格納する周辺インタフェースを介して、情報事象及びサブ事象情報を事象モニタ311に送信する。センサ116は、近接センサ、加速度計、ジャイロスコープ、マイク及びビデオカメラのうちの1つ以上を含む。いくつかの実施形態において、センサ116は、入力装置128及び/又はタッチセンシティブディスプレイ156を更に含む。
【0079】
いくつかの実施形態において、事象モニタ311は、所定の間隔でセンサ116及び/又は周辺インタフェースに要求を送出する。それに応答して、センサ116及び/又は周辺インタフェースは事象情報を送信する。他の実施形態において、センサ116及び/又は周辺インタフェース118は、重要な事象(例えば、所定の雑音閾値を超え且つ/又は所定の期間より長い期間の入力の受信)があった時にのみ事象情報を送信する。
【0080】
事象モニタ311は、事象情報を受信して事象ディスパッチャモジュール315に中継する。いくつかの実施形態において、事象モニタ311は、事象情報の配信先となる1つ以上のそれぞれのアプリケーション(例えば、133−1)を判定する。いくつかの実施形態において、事象モニタ311は、事象情報の配信先となる1つ以上のそれぞれのアプリケーションの1つ以上のそれぞれのアプリケーションビュー317を更に判定する。
【0081】
いくつかの実施形態において、事象レコグナイザグローバルメソッド312は、ヒットビュー判定モジュール314及び/又はアクティブ事象レコグナイザ判定モジュール316を更に含む。
【0082】
ヒットビュー判定モジュール314は、存在する場合に、タッチセンシティブディスプレイ156が2つ以上のビューを表示した時に1つ以上のビュー内で事象又はサブ事象が行われた場所を判定するソフトウェア手順を提供する。ビューは、ユーザがディスプレイ上で見られる制御及び他の要素から構成される。
【0083】
それぞれのアプリケーションと関連付けられたユーザインタフェースの別の態様は、本明細書においてアプリケーションビュー又はユーザインタフェースウィンドウと呼ばれることもあるビュー317のセットであり、このビューにおいて、情報が表示され且つタッチジェスチャが発生する。タッチが検出されるアプリケーションビュー(それぞれのアプリケーションの)は、アプリケーションのビュー階層内の特定のビューに対応してもよい。例えばタッチが検出される最下位レベルのビューはヒットビューと呼ばれてもよく、適切な入力として認識される事象のセットは、タッチジェスチャを開始する最初のタッチのヒットビューに少なくとも部分的に基づいて判定されてもよい。
【0084】
ヒットビュー判定モジュール314は、事象及び/又はサブ事象に関連する情報を受信する。アプリケーションが階層に編成された多数のビューを有する場合、ヒットビュー判定モジュール314は、事象又はサブ事象を処理すべき階層の最下位のビューとしてヒットビューを識別する。殆どの状況において、ヒットビューは、開始事象又は開始サブ事象(すなわち、ジェスチャを形成する事象及び/又はサブ事象のシーケンスの第1の事象又はサブ事象)が発生する最下位レベルのビューである。ヒットビューは、ヒットビュー判定モジュールにより識別されると、一般に、ヒットビューとして識別された同一のタッチ又は入力ソースに関連する全ての事象及び/又はサブ事象を受信する。しかし、ヒットビューは、ヒットビューとして識別された同一のタッチ又は入力ソースに関連する全ての事象及び/又はサブ事象を受信する唯一のビューであるとは限らない。換言すると、いくつかの実施形態において、別のアプリケーション(例えば、133−2)又は同一のアプリケーションの別のビューは、ヒットビューがタッチ又は入力ソースに対して判定されているかどうかにかかわらず、同一のタッチ又は入力ソースに関連する事象及び/又はサブ事象の少なくともサブセットを更に受信する。
【0085】
アクティブ事象レコグナイザ判定モジュール316は、事象及び/又はサブ事象の特定のシーケンスを受信すべきであるビュー階層内の1つ以上のビューを判定する。いくつかのアプリケーションコンテキストにおいて、アクティブ事象レコグナイザ判定モジュール316は、ヒットビューのみが事象及び/又はサブ事象の特定のシーケンスを受信すべきであると判定する。他のアプリケーションコンテキストにおいて、アクティブ事象レコグナイザ判定モジュール316は、事象又はサブ事象の物理的な場所を含む全てのビューが能動的に関わるビューであると判定するため、能動的に関わる全てのビューが事象及び/又はサブ事象の特定のシーケンスを受信すべきであると判定する。他のアプリケーションコンテキストにおいて、タッチ事象及び/又はサブ事象が1つの特定のビューと関連付けられた領域に全体的に制限される場合でも、階層における上位レベルのビューは、能動的に関わるビューとして留まるため、事象及び/又はサブ事象の特定のシーケンスを受信すべきである。更に又はあるいは、アクティブ事象レコグナイザ判定モジュール316は、事象及び/又はサブ事象の特定のシーケンスを受信すべきプログラム階層におけるアプリケーションを判定する。従って、いくつかの実施形態において、アクティブ事象レコグナイザ判定モジュール316は、プログラム階層におけるそれぞれのアプリケーションのみが事象及び/又はサブ事象の特定のシーケンスを受信すべきであると判定する。いくつかの実施形態において、アクティブ事象レコグナイザ判定モジュール316は、プログラム階層における複数のアプリケーションが事象及び/又はサブ事象の特定のシーケンスを受信すべきであると判定する。
【0086】
事象ディスパッチャモジュール315は、事象情報を事象レコグナイザ(例えば、本明細書において「ジェスチャレコグナイザ」とも呼ばれる)(例えば、事象レコグナイザ325−1)にディスパッチする。アクティブ事象レコグナイザ判定モジュール316を含む実施形態において、事象ディスパッチャモジュール315は、アクティブ事象レコグナイザ判定モジュール316により判定された事象レコグナイザに事象情報を配信する。いくつかの実施形態において、事象ディスパッチャモジュール315は、各事象レコグナイザ325(又は各事象レコグナイザ325における事象受信部3031)により検索される事象情報を事象キューに格納する。
【0087】
いくつかの実施形態において、それぞれのアプリケーション(例えば、133−1)は、アプリケーション内部状態321を含み、これは、アプリケーションがアクティブであるか又は実行している時にタッチセンシティブディスプレイ156に表示される現在のアプリケーションビューを示す。いくつかの実施形態において、デバイス/グローバル内部状態134(
図1C)は、現在アクティブであるアプリケーションを判定するために事象レコグナイザグローバルメソッド312により使用され、アプリケーション内部状態321は、事象情報の配信先となるアプリケーションビュー317を判定するために事象レコグナイザグローバルメソッド312により使用される。
【0088】
いくつかの実施形態において、アプリケーション内部状態321は、例えば、アプリケーション133−1が実行を再開する時に使用される再開情報と、表示されている情報を示すか又はアプリケーション133−1による表示の準備が整っているユーザインタフェース状態情報と、ユーザがアプリケーション133−1の前の状態又はビューに戻ることを可能にする状態キューと、ユーザにより行われた前の動作のリドゥ/アンドゥキューとのうちの1つ以上の追加の情報を含む。いくつかの実施形態において、アプリケーション内部状態321は、コンテキスト情報/テキスト及びメタデータ323を更に含む。
【0089】
いくつかの実施形態において、アプリケーション133−1は、各々がアプリケーションのユーザインタフェースのそれぞれのビュー内で発生するタッチ事象を処理する命令を有する1つ以上のアプリケーションビュー317(例えば、対応する事象ハンドラ319)を含む。アプリケーション133−1の少なくとも1つのアプリケーションビュー317は、1つ以上の事象レコグナイザ325を含む。一般に、それぞれのアプリケーションビュー317は複数の事象レコグナイザ325を含む。他の実施形態において、1つ以上の事象レコグナイザ325は、ユーザインタフェースキット(不図示)又はアプリケーション133−1がメソッド及び他のプロパティを継承する上位レベルのオブジェクト等の独立したモジュールの一部である。いくつかの実施形態において、それぞれのアプリケーションビュー317は、データ更新部、オブジェクト更新部、GUI更新部及び/又は受信した事象データのうちの1つ以上を更に含む。
【0090】
それぞれのアプリケーション(例えば、133−1)は、1つ以上の事象ハンドラ319を更に含む。一般に、それぞれのアプリケーション(例えば、133−1)は複数の事象ハンドラ319を含む。
【0091】
各事象レコグナイザ325−1は、事象ディスパッチャモジュール315から事象情報を受信し(直接又はアプリケーション133−1を介して間接的に)、その事象情報から事象を識別する。事象レコグナイザ325−1は、事象受信部3031と事象比較部3033とを含む。
【0092】
事象情報は、事象(例えばタッチ)又はサブ事象(例えば、タッチの移動)に関する情報を含む。事象又はサブ事象に依存して、事象情報は、事象又はサブ事象の場所等の追加の情報を更に含む。事象又はサブ事象がタッチの動きに関係する場合、事象情報は、サブ事象の速度及び方向を更に含んでもよい。いくつかの実施形態において、事象は1つの向きから別の向き(例えば、縦向きから横向き又は横向きから縦向き)へのデバイスの回転を含み、事象情報は、デバイスの現在の向き(デバイスの態勢とも呼ばれる)に関する対応する情報を含む。
【0093】
事象比較部3033は、事象情報を1つ以上の事前定義済みのジェスチャ定義(本明細書において「事象定義」とも呼ばれる)と比較し、その比較に基づいて、事象又はサブ事象を判定するか、あるいは事象又はサブ事象の状態を判定又は更新する。いくつかの実施形態において、事象比較部3033は、1つ以上のジェスチャ定義3035(上述したように、本明細書において「事象定義」とも呼ばれる)を含む。ジェスチャ定義3035は、例えば事象1(3037−1)及び事象2(3037−2)等である事象(例えば、事前定義済みの事象及び/又はサブ事象のシーケンス)の定義を含む。いくつかの実施形態において、ジェスチャ定義3035におけるサブ事象は、例えばタッチの開始、タッチの終了、タッチの移動、タッチの取り消し及びマルチタッチを含む。一例において、事象1(3037−1)の定義は、表示されたオブジェクトに対するダブルタップである。例えばダブルタップは、ジェスチャの所定のフェーズに対して表示されたオブジェクトに対する第1のタッチ(タッチの開始)と、ジェスチャの次の所定のフェーズに対する第1のリフトオフ(タッチの終了)と、ジェスチャの後続の所定のフェーズに対する表示されたオブジェクトに対する第2のタッチ(タッチの開始)と、ジェスチャの最後の所定のフェーズに対する第2のリフトオフ(タッチの終了)とを含む。別の例において、事象2(3037−2)の定義は、表示されたオブジェクトに対するドラッグを含む。例えばドラッグは、表示されたオブジェクトに対するタッチ(又は接触)と、タッチセンシティブディスプレイ156にわたるタッチの移動と、タッチのリフトオフ(タッチの終了)とを含む。
【0094】
いくつかの実施形態において、事象レコグナイザ325−1は、事象配信3039のための情報を更に含む。事象配信3039のための情報は、対応する事象ハンドラ319に対する参照を含む。オプションとして、事象配信3039のための情報は動作−対象の対を含む。いくつかの実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、事象情報(例えば、動作メッセージ)は、動作−対象の対により識別された1つ以上の対象に送出される。他の実施形態において、ジェスチャ(又はジェスチャの一部)の認識に応答して、動作−対象の対が起動される。
【0095】
いくつかの実施形態において、ジェスチャ定義3035は、それぞれのユーザインタフェースオブジェクトに対するジェスチャの定義を含む。いくつかの実施形態において、事象比較部3033は、サブ事象と関連付けられるユーザインタフェースオブジェクトを判定するためにヒットテストを行う。例えば3つのユーザインタフェースオブジェクトがタッチセンシティブディスプレイ156に表示されるアプリケーションビューにおいて、タッチがタッチセンシティブディスプレイ156で検出された時、事象比較部3033は、3つのユーザインタフェースオブジェクトのうちどのユーザインタフェースオブジェクトがタッチ(事象)と関連付けられるかを判定するためにヒットテストを行う。表示されたオブジェクトの各々がそれぞれの事象ハンドラ319と関連付けられる場合、事象比較部3033は、ヒットテストの結果を使用して起動されるべき事象ハンドラ319を判定する。例えば事象比較部3033は、ヒットテストをトリガするオブジェクト及び事象と関連付けられた事象ハンドラ319を選択する。
【0096】
いくつかの実施形態において、それぞれのジェスチャの各ジェスチャ定義3037は、事象及び/又はサブ事象のシーケンスが事象レコグナイザの事象の種類に対応するか否かを判定するまで事象情報の配信を遅延させる遅延動作を更に含む。
【0097】
各事象レコグナイザ325−1は、一連の事象及び/又はサブ事象がジェスチャ定義3035のいずれの事象とも一致しないと判定した場合、事象失敗状態になり、その後、タッチジェスチャの後続の事象及び/又はサブ事象を無視する。この状況において、ヒットビューに対してアクティブのままである他の事象レコグナイザがある場合、それらの事象レコグナイザは実行中のタッチジェスチャの事象及び/又はサブ事象を追跡及び処理し続ける。
【0098】
いくつかの実施形態において、ビューに対する事象レコグナイザが残っていない場合、事象情報は、ビュー階層のより高いビューにおける1つ以上の事象レコグナイザに送出される。あるいは、ビューに対する事象レコグナイザが残っていない場合、事象情報は無視される。いくつかの実施形態において、ビュー階層におけるビューに対する事象レコグナイザが残っていない場合、事象情報は、プログラム階層におけるより高いプログラムレベルの1つ以上の事象レコグナイザに送出される。あるいは、ビュー階層におけるビューに対する事象レコグナイザが残っていない場合、事象情報は無視される。
【0099】
いくつかの実施形態において、各事象レコグナイザ325−1は事象レコグナイザ状態334を含む。事象レコグナイザ状態334は、各事象レコグナイザ325−1の状態を含む。
図4A及び
図4B、並びに
図5A〜
図5Cを参照して、事象レコグナイザ状態の例を以下に更に詳細に説明する。
【0100】
いくつかの実施形態において、事象レコグナイザ状態334は、レコグナイザのメタデータ及びプロパティ3043を含む。いくつかの実施形態において、レコグナイザのメタデータ及びプロパティ3043は、A)事象配信システムが能動的に関わる事象レコグナイザに事象及び/又はサブ事象を配信すべき方法を示す設定可能なプロパティ、フラグ並びに/あるいはリスト、B)事象レコグナイザが互いに対話する方法を示す設定可能なプロパティ、フラグ及び/あるいはリスト、C)事象レコグナイザが事象情報を受信する方法を示す設定可能なプロパティ、フラグ及び/あるいはリスト、D)事象レコグナイザがジェスチャを認識してもよい方法を示す設定可能なプロパティ、フラグ及び/あるいはリスト、E)事象及び/又はサブ事象がビュー階層における種々のレベルに配信されるかを示す設定可能なプロパティ、フラグ並びに/あるいはリスト、並びにF)対応する事象ハンドラ319に対する参照のうちの1つ以上を含む。
【0101】
いくつかの実施形態において、事象レコグナイザ状態334は事象/タッチメタデータ3045を含む。事象/タッチメタデータ3045は、検出されているそれぞれの事象/タッチに関する事象/タッチ情報を含み、ジェスチャ定義3035の各ジェスチャ定義3037に対応する。事象/タッチ情報は、それぞれの事象/タッチの場所、タイムスタンプ、速度、方向、距離、寸法(又は寸法の変化)及び角度(又は角度の変化)のうちの1つ以上を含む。
【0102】
いくつかの実施形態において、各事象レコグナイザ325は、ジェスチャの1つ以上の特定の事象及び/又はサブ事象が認識された時に各事象レコグナイザ325と関連付けられた事象ハンドラ319を起動する。いくつかの実施形態において、各事象レコグナイザ325は、事象と関連付けられた事象情報を事象ハンドラ319に配信する。
【0103】
事象ハンドラ319は、起動された時にデータを作成及び/又は更新することと、オブジェクトを作成及び更新することと、表示情報を準備してディスプレイ126又はタッチセンシティブディスプレイ156に表示するためにその情報を送出することとのうちの1つ以上を実行する。
【0104】
いくつかの実施形態において、それぞれのアプリケーションビュー317−2はビューメタデータ341を含む。
図3Bに関して上述したように、ビューメタデータ341はビューに関するデータを含む。オプションとして、ビューメタデータ341は、停止プロパティ342、スキッププロパティ343、NoHitスキッププロパティ344及び他のビューメタデータ329のうちの1つ以上を含む。
【0105】
いくつかの実施形態において、ビュー階層内の第1の能動的に関わるビューは、その第1の能動的に関わるビューと関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成されてもよい。この挙動により、スキッププロパティ343を実現できる。スキッププロパティがアプリケーションビューに対して設定される場合、それぞれのサブ事象の配信は、ビュー階層で他の能動的に関わるビューと関連付けられた事象レコグナイザに対して依然として実行される。
【0106】
あるいは、ビュー階層内の第1の能動的に関わるビューは、第1の能動的に関わるビューがヒットビューでない限り、その第1の能動的に関わるビューと関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成されてもよい。この挙動により、条件付きNoHitスキッププロパティ344を実現できる。
【0107】
いくつかの実施形態において、ビュー階層内の第2の能動的に関わるビューは、第2の能動的に関わるビューと関連付けられた事象レコグナイザ及び第2の能動的に関わるビューの祖先と関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成される。この挙動により、停止プロパティ342を実現できる。
【0108】
図3Eは、いくつかの実施形態に係るジェスチャレコグナイザ(例えば、事象処理構成要素390)の例示的なクラス及びインスタンスを示すブロック図である。
【0109】
ソフトウェアアプリケーション(例えば、アプリケーション133−1)は、1つ以上の事象レコグナイザ3040を有する。いくつかの実施形態において、各事象レコグナイザ(例えば、3040−2)は事象レコグナイザのクラスである。各事象レコグナイザ(例えば、3040−2)は、事象レコグナイザ専用コード338(例えば、事象レコグナイザの動作を定義する命令のセット)及び状態遷移マシン340を含む。
【0110】
いくつかの実施形態において、ソフトウェアアプリケーション(例えば、アプリケーション133−1)のアプリケーション状態321は、事象レコグナイザのインスタンスを含む。事象レコグナイザの各インスタンスは、状態(例えば、事象レコグナイザ状態334)を有するオブジェクトである。各事象レコグナイザの「実行」は、対応する事象レコグナイザ専用コード(例えば、338)を実行すること及び事象レコグナイザのインスタンス3047の状態334を更新又は維持することで実現される。事象レコグナイザのインスタンス3047の状態334は、事象レコグナイザのインスタンスの状態遷移マシン340の状態3038を含む。
【0111】
いくつかの実施形態において、アプリケーション状態321は、複数の事象レコグナイザのインスタンス3047を含む。各事象レコグナイザのインスタンス3047は、一般に、アプリケーションのビューに結合(「接続」とも呼ばれる)されている事象レコグナイザに対応する。いくつかの実施形態において、1つ以上の事象レコグナイザのインスタンス3047は、それぞれのアプリケーションの特定のビューを全く参照することなくプログラム階層におけるそれぞれのアプリケーションに結合される。いくつかの実施形態において、アプリケーション状態321は、各事象レコグナイザ(例えば、3040−2)の複数のインスタンス(例えば、3047−1〜3047−L)を含む。いくつかの実施形態において、アプリケーション状態321は、複数の事象レコグナイザ(例えば、3040−1〜3040−R)のインスタンス3047を含む。
【0112】
いくつかの実施形態において、ジェスチャレコグナイザ3040のそれぞれのインスタンス3047−2は事象レコグナイザ状態334を含む。上述したように、いくつかの実施形態において、事象レコグナイザ状態334は、レコグナイザのメタデータ及びプロパティ3043、並びに事象/タッチメタデータ3045を含む。いくつかの実施形態において、事象レコグナイザ状態334は、ジェスチャレコグナイザ3040−2のそれぞれのインスタンス3047−2が接続されるビューを示すビュー階層基準336を更に含む。
【0113】
いくつかの実施形態において、レコグナイザのメタデータ及びプロパティ3043は、以下のもの、あるいはそれらのサブセット又は上位セットを含む。
【0114】
・排他的フラグ324
・排他的除外リスト326
・待ちリスト
・遅延タッチ開始済フラグ328
・遅延タッチ終了フラグ330
・タッチ取り消しフラグ332
【0115】
いくつかの実施形態において、1つ以上の事象レコグナイザは、事象レコグナイザが事象を認識するまでサブ事象のシーケンスの1つ以上のサブ事象を送出するのを遅延させるように構成されてもよい。この挙動は遅延した事象を反映する。例えば、複数のタップジェスチャが可能であるビューのシングルタップジェスチャを考える。その場合、タップ事象は「タップ+遅延」レコグナイザになる。本質的に、事象レコグナイザは、この挙動を実現する場合、サブ事象のシーケンスが実際に事象定義に対応することを確定するまで事象認識を遅延させる。受信側ビューが取り消された事象に適切に応答できない場合、この挙動は適切だろう。いくつかの実施形態において、事象レコグナイザは、サブ事象のシーケンスが事象定義に対応しないことを確定するまで、事象認識ステータスをそれぞれの能動的に関わるビューに更新するのを遅延させる。遅延タッチ開始済フラグ328、遅延タッチ終了フラグ330及びタッチ取り消しフラグ332は、サブ事象配信技術を調節するために提供され、事象レコグナイザ及びビューステータス情報は特定のニーズに更新される。
【0116】
いくつかの実施形態において、レコグナイザのメタデータ及びプロパティ3043は、以下のもの、あるいはそれらのサブセット又は上位セットを含む。
【0117】
・各事象レコグナイザのインスタンス(例えば、3047−2)に対する状態遷移マシン(例えば、340)の状態を示す状態遷移マシンの状態/段階3038は、以下に説明するように、例えば「事象可能」、「事象認識済」及び「事象失敗済」等の種々の状態値を有することができ、あるいは又は更に、タッチデータ構造が先行するタッチデータ構造により参照されていない新しいタッチを定義することを示すことができる「タッチ段階開始済」、定義されているタッチが従来の位置から移動したことを示すことができる「タッチ段階移動済」値、タッチが同一の位置に留まっていることを示すことができる「タッチ段階静止」値、タッチが終了した(例えば、ユーザがマルチタッチディスプレイの表面から指を離した)ことを示すことができる「タッチ段階終了済」値、タッチがデバイスにより取り消されたことを示すことができる「タッチ段階取り消し済」値等の種々の段階値を有することができ、取り消されたタッチは、ユーザにより必ずしも終了されなくてもよいが、デバイスが無視することを決定したタッチであってよく、例えばデバイスは、タッチが意図せず(すなわち、ポータブルマルチタッチ対応デバイスをポケットに入れた結果)生成されていると判定し、且つその理由によりタッチを無視でき、状態遷移マシンの状態/段階3038の各値は整数(本明細書において「ジェスチャレコグナイザ状態値」と呼ぶ)であってよい。
・各々が事象又はタッチをジェスチャ又はジェスチャの一部として認識することに応答して各事象レコグナイザのインスタンスが識別された動作メッセージを送出する対象を識別する動作−対象の対3051。
・対応するデリゲートに対する参照であるデリゲート3053であり、デリゲートが各事象レコグナイザのインスタンスに割り当てられる時、デリゲートが各事象レコグナイザのインスタンスに割り当てられていない時にデリゲート346はヌル値を含む。
・各事象レコグナイザのインスタンスが使用可能にされるかを示す使用可能プロパティ3055であり、いくつかの実施形態において、各事象レコグナイザのインスタンスは、使用可能にされない(例えば、使用不可にされる)場合に事象又はタッチを処理しない。
【0118】
いくつかの実施形態において、例外リスト326は、非排他的事象レコグナイザにより更に使用可能である。特に、非排他的事象レコグナイザが事象又はサブ事象を認識する場合、後続の事象及び/又はサブ事象は、事象又はサブ事象を認識した事象レコグナイザの例外リスト326に列挙された排他的事象レコグナイザを除いて、現在アクティブなビューと関連付けられた排他的事象レコグナイザに配信されない。
【0119】
いくつかの実施形態において、事象レコグナイザは、望ましくない事象及び/又はサブ事象がヒットビューに配信されるのを防止するために、遅延タッチ終了フラグ330と組み合わせてタッチ取り消しフラグ332を利用するように構成されてもよい。例えば、シングルタップジェスチャの定義とダブルタップジェスチャの前半とは同一である。シングルタップ事象レコグナイザがシングルタップを正常に認識すると、望ましくない動作が起こるだろう。遅延タッチ終了フラグが設定される場合、シングルタップ事象が認識されるまで、シングルタップ事象レコグナイザがサブ事象をヒットビューに送出するのを防止する。また、シングルタップ事象レコグナイザの待ちリストがダブルタップ事象レコグナイザを識別できるため、ダブルタップ事象レコグナイザが事象不可能状態になるまで、シングルタップ事象レコグナイザがシングルタップを認識するのを防止する。待ちリストを使用することにより、ダブルタップジェスチャが実行される際にシングルタップと関連付けられた動作の実行を回避する。その代わり、ダブルタップ事象の認識に応答して、ダブルタップと関連付けられた動作のみが実行される。
【0120】
タッチセンシティブ面上のユーザタッチの形態を特に参照すると、上述したように、タッチ及びユーザジェスチャは瞬時でなくてもよい動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含んでよい。しかし、タッチデータ構造は、特定の時間のタッチの状態(すなわち、より一般的にはあらゆる入力ソースの状態)を定義する。従って、タッチデータ構造に格納された値がシングルタッチのコースを変更することにより、異なる時点のシングルタッチの状態をアプリケーションに搬送できる。
【0121】
各タッチデータ構造は種々のエントリを含むことができる。いくつかの実施形態において、タッチデータ構造は、少なくとも事象/タッチメタデータ3045におけるタッチ専用エントリに対応するデータ、例えば以下のもの、あるいはそれらのサブセット又は上位セットを含んでもよい。
【0122】
・「ビューに対する第1のタッチ」エントリ345
・タッチデータ構造が関連する特定の時間(例えば、タッチの時間)を示す「タイムスタップ」情報を含む「タッチ毎の情報」エントリ3051であり、「タッチ毎の情報」エントリ3051は、対応するタッチの場所等の他の情報を含む
・オプションの「タップカウント」エントリ348
【0123】
従って、各タッチデータ構造は、特定の時間にタッチ(又は他の入力ソース)で発生していること(例えば、タッチが静止しているか、移動しているか等)及びタッチと関連付けられた他の情報(位置等)を定義できる。従って、各タッチデータ構造は、特定の瞬間の特定のタッチの状態を定義できる。同一の時間を参照する1つ以上のタッチデータ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義できるタッチ事象データ構造に追加される(上述したように、いくつかのタッチデータ構造は、終了し且つもはや受信されていないタッチを更に参照してもよい)。多数のタッチ事象データ構造は、ビューで発生しているタッチを示す連続した情報をソフトウェアに提供するために、時間が経つにつれビューを実現するソフトウェアに送出される。
【0124】
オプションとしてマルチタッチジェスチャを含む複雑なタッチジェスチャを処理する機能は、種々のソフトウェアアプリケーションを複雑にしうる。いくつかの例において、そのように複雑になることにより、高度な所望のインタフェース機能を実現する必要があるだろう。例えばゲームは、同時に複数のボタンを押下したり、あるいは加速度計データをタッチセンシティブ面上のタッチと組み合わせたりすることを必要とする場合が多いため、種々のビューで発生する複数の同時のタッチを処理する機能を必要とするだろう。しかし、いくつかのより単純なアプリケーション及び/又はビューは、高度なインタフェース機能を必要としなくてもよい。例えば単純なソフトボタン(すなわち、タッチセンシティブディスプレイに表示されるボタン)は、マルチタッチ機能性ではなくシングルタッチで十分に動作できる。これらの場合、基礎となるOSは、シングルタッチ(例えば、ソフトボタン上のシングルタッチ又はシングルタップ)のみにより動作可能であることを意図するビューと関連付けられたソフトウェアコンポーネントに不必要なタッチデータ又は過剰なタッチデータ(例えば、マルチタッチデータ)を送出してもよい。ソフトウェアコンポーネントは、このデータを処理する必要があってもよいため、シングルタッチのみが関連するビューと関連付けられても、マルチタッチを処理するソフトウェアアプリケーションの全ての複雑さを備える必要があるだろう。従来マウスインタフェース環境(すなわち、種々のボタン等)でプログラムするのが容易であったソフトウェアコンポーネントがマルチタッチ環境で非常により複雑になる可能性があるため、これによりデバイスに対してソフトウェアを開発するコストが増加しうる。
【0125】
複雑なタッチジェスチャを認識する複雑さを軽減するために、デリゲートを使用していくつかの実施形態に係る事象レコグナイザの挙動を制御できる。以下に説明するように、デリゲートは、例えば対応する事象レコグナイザ(又はジェスチャレコグナイザ)が、事象(例えば、タッチ)情報を受信できるか、状態遷移マシンの初期状態(例えば、事象可能状態)から別の状態に遷移できるか、且つ/あるいは他の事象レコグナイザ(又はジェスチャレコグナイザが事象(例えば、タッチ)を認識するのを阻止することなくあるいは事象を認識する他の事象レコグナイザ(又はジェスチャレコグナイザ)によりブロックされることなく、事象を対応するジェスチャとして同時に認識できるかを判定できる。
【0126】
しかし、タッチセンシティブ面上でユーザタッチを評価し且つ処理する複雑さに関する上記の説明は、入力装置128を備える電子デバイス102を操作する全ての形態のユーザ入力に更に当てはまり、ユーザ入力の全てがタッチスクリーン上で開始されるわけではなく、例えば、認識される事象を定義する事象及び/又はサブ事象に対応する入力として利用されてもよい一回又は複数回のキーボード押下又はキーボード保持を含むかあるいは含まないマウスの移動及びマウスボタンの押下、タッチパッド上の例えばタップ、ドラッグ、スクロール等のデバイスの回転又は他の移動、ユーザ移動、ペンスタイラスの入力、音声命令、検出された眼球運動、生体情報認識入力、検出されたユーザの生理学的変化、並びに/あるいはそれらのあらゆる組合せを連係することが理解されるだろう。
【0127】
事象情報の流れを参照すると、
図3Fは、いくつかの実施形態に係る事象情報の流れを示すブロック図である。事象ディスパッチャモジュール315(例えば、オペレーティングシステム118又はアプリケーションソフトウェア124における)は、事象情報を受信し、その事象情報を1つ以上のアプリケーション(例えば、133−1及び133−2)に送出する。いくつかの実施形態において、アプリケーション133−1は、ビュー階層506における複数のビュー(例えば、
図3Dのビュー317に対応する508、510及び512)、並びに複数のビューにおける複数のジェスチャレコグナイザ(516−1〜516−3)を含む。アプリケーション133−1は、対象−動作の対(例えば、552−1及び552−2)における対象値に対応する1つ以上のジェスチャハンドラ550を更に含む。いくつかの実施形態において、事象ディスパッチャモジュール315は、ヒットビュー判定モジュール314からヒットビュー情報を受信し、ヒットビュー(例えば、512)又はヒットビュー(例えば、516−1及び516−2)に接続された事象レコグナイザに事象情報を送出する。更に又はあるいは、事象ディスパッチャモジュール315は、ヒットレベル判定モジュール352からヒットレベル情報を受信し、ヒットレベルのアプリケーション(例えば、133−1及び133−2)又はヒットレベルアプリケーションの1つ以上の事象レコグナイザ(例えば、516−4)に事象情報を送出する。いくつかの実施形態において、事象情報を受信するアプリケーションのうちの1つは、デフォルトアプリケーションである(例えば、133−2はデフォルトアプリケーションであってもよい)。いくつかの実施形態において、受信側アプリケーションの各々におけるジェスチャレコグナイザのサブセットのみが事象情報を受信することを許可される(又はそのように構成される。例えば、アプリケーション133−1のジェスチャレコグナイザ516−3は事象情報を受信しない。本明細書において、事象情報を受信するジェスチャレコグナイザを受信側ジェスチャレコグナイザと呼ぶ。
図3Fにおいて、受信側ジェスチャレコグナイザ516−1、516−2及び516−4は、事象情報を受信し、受信した事象情報を受信側ジェスチャレコグナイザにおける各ジェスチャ定義3037(
図3D)と比較する。
図3Fにおいて、ジェスチャレコグナイザ516−1及び516−4は、受信した事象情報と一致する各ジェスチャ定義を有し、それぞれの動作メッセージ(例えば、518−1及び518−2)を対応するジェスチャハンドラ(例えば、552−1及び552−3)に送出する。
【0128】
図4Aは、4つの状態を含む事象レコグナイザ状態遷移マシン400を示す。受信したサブ事象に基づいて事象レコグナイザ状態遷移マシン400の状態遷移を管理することにより、事象レコグナイザは事象定義を効率的に表す。例えばタップジェスチャは、2つ又はオプションとして3つのサブ事象のシーケンスにより効率的に定義されてもよい。第1に、タッチは検出されるべきであり、これはサブ事象1となる。例えばタッチサブ事象は、状態遷移マシン400を有する事象レコグナイザを含むビューでタッチセンシティブ面に触れるユーザの指であってもよい。第2に、タッチが実質的に所定の方向に全く移動しないオプションの測定された遅延(例えばタッチ位置のあらゆる移動は、ディスプレイ上で距離(例えば、5mm)又は画素数(例えば、5画素)として測定されてもよい事前定義済みの閾値より小さい)及び遅延は、十分に短く、サブ事象2として提供される。最後に、タッチの終了(例えば、タッチセンシティブ面からのユーザの指のリフトオフ)は、サブ事象3として提供される。これらのサブ事象を受信することに基づいて事象レコグナイザ状態遷移マシン400を状態間の遷移に符号化することにより、事象レコグナイザ状態遷移マシン400は、タップジェスチャ事象定義を効率的に表す。尚、
図4Aに示された状態は例示的な状態であり、事象レコグナイザ状態遷移マシン400は、より多くの状態又はより少ない状態を含んでもよく、且つ/あるいは事象レコグナイザ状態遷移マシン400における各状態は、示された状態又は他のあらゆる状態のうちの1つに対応してもよい。
【0129】
いくつかの実施形態において、事象の種類にかかわらず、事象レコグナイザ状態遷移マシン400は、事象認識開始状態405から開始し、受信するサブ事象に依存して残りの状態のうちのいずれかに進んでもよい。事象レコグナイザ状態遷移マシン400の説明を容易にするために、事象可能状態410からの経路を説明した後、事象認識開始状態405から事象認識済状態415、事象可能状態410及び事象不可能状態420への直接経路を説明する。
【0130】
事象認識開始状態405から開始し、単独で事象の事象定義を含むサブ事象が受信される場合、事象レコグナイザ状態遷移マシン400は事象認識済状態415に遷移する。
【0131】
状態事象認識開始405から開始し、事象定義の第1のサブ事象ではないサブ事象が受信される場合、事象レコグナイザ状態遷移マシン400は事象不可能状態420に遷移する。
【0132】
事象認識開始状態405から開始し、所定の事象定義の第1のサブ事象であり且つ最後のサブ事象ではないサブ事象が受信される場合、事象レコグナイザ状態遷移マシン400は事象可能状態410に遷移する。受信する次のサブ事象が所定の事象定義の第2のサブ事象であるが、最後のサブ事象ではない場合、事象レコグナイザ状態遷移マシン400は状態事象可能410のままである。受信したサブ事象のシーケンスが事象定義の一部であり続ける限り、事象レコグナイザ状態遷移マシン400は状態事象可能410のままであってよい。事象レコグナイザ状態遷移マシン400は、常に事象可能状態410であり且つ事象定義の一部ではないサブ事象を受信する場合、状態事象不可能420に遷移することにより、現在の事象(もしあれば)がこの事象レコグナイザ(すなわち、状態400に対応する事象レコグナイザ)に対応する事象の種類ではないと判定する。一方、事象レコグナイザ状態遷移マシン400は、事象可能状態410であり且つ事象定義の最後のサブ事象を受信する場合、事象認識済状態415に遷移することにより、正常な事象認識を完了する。
【0133】
図4Bは、ビューがそれぞれの入力に関する情報を受信する方法を示す有限の状態遷移マシンを有する入力ソース処理440の一実施形態を示す。尚、デバイスのタッチセンシティブ面上にマルチタッチがある場合、各タッチは、自身の有限の状態遷移マシンを有する別個の入力ソースである。本実施形態において、入力ソース処理440は、入力シーケンス開始445、入力シーケンス継続450、入力シーケンス終了済455及び入力シーケンス取り消し済460の4つの状態を含む。入力ソース処理440は、例えば入力シーケンスの完了が検出された後で初めて入力がアプリケーションに配信される場合、各事象レコグナイザにより使用されてもよい。入力ソース処理440は、アプリケーションに配信された入力シーケンスに応答して実行された変化を取り消せないかあるいは解除できないアプリケーションで使用可能である。尚、
図4Bに示された状態は例示的な状態であり、入力ソース処理440は、より多くの状態又はより少ない状態を含んでもよく、且つ/あるいは入力ソース処理440における各状態は、示された状態又は他のあらゆる状態のうちの1つに対応してもよい。
【0134】
入力シーケンス開始445から開始し、単独で入力シーケンスを完了する入力が受信される場合、入力ソース処理440は入力シーケンス終了済455に遷移する。
【0135】
入力シーケンス開始445から開始し、終了した入力シーケンスを示す入力が受信される場合、入力ソース処理440は入力シーケンス取り消し済460に遷移する。
【0136】
入力シーケンス開始445から開始し、入力シーケンスの第1の入力であり且つ最後の入力ではない入力が受信される場合、入力ソース処理440は、状態入力シーケンス継続450に遷移する。受信する次の入力が入力シーケンスの第2の入力である場合、入力処理440は状態入力シーケンス継続450のままである。配信されるサブ事象のシーケンスが所定の入力シーケンスの一部であり続ける限り、入力ソース処理440は状態入力シーケンス継続450のままであってよい。入力ソース処理440は、常に状態入力シーケンス継続450であり且つ入力シーケンスの一部ではない入力を受信する場合、状態入力シーケンス取り消し済460に遷移する。一方、入力ソース処理440は、入力シーケンス継続450であり且つ所定の入力定義の最後の入力を受信する場合、入力シーケンス終了済455に遷移することにより、サブ事象のグループを正常に受信する。
【0137】
いくつかの実施形態において、入力ソース処理440は、特定のビュー又はプログラムレベルに対して実現されてもよい。その場合、サブ事象の特定のシーケンスは、結果として状態入力取り消し済460に遷移してもよい。
【0138】
一例として、能動的に関わるビュー入力ソースハンドラ480(以下、「ビュー480」)のみで表された能動的に関わるビューを想定する
図4Cを考える。ビュー480は、事象レコグナイザのうちの1つとして縦スワイプ事象レコグナイザ468(以下、「レコグナイザ468」)のみで表された縦スワイプ事象レコグナイザを含む。この場合、レコグナイザ468は、1)フィンガーダウン465−1、2)オプションのわずかな遅延465−2、3)少なくともN画素の縦スワイプ465−3及び4)フィンガーリフトオフ465−4を検出することを定義の一部として必要としてもよい。
【0139】
例えばレコグナイザ468は、設定された遅延タッチ開始済フラグ328及びタッチ取り消しフラグ332を更に有する。次に、レコグナイザ468及びビュー480への以下のサブ事象のシーケンスの配信を考える。
【0140】
・サブ事象シーケンス465−1:レコグナイザ468の事象定義に対応するフィンガーダウン検出
・サブ事象シーケンス465−2:レコグナイザ468の事象定義に対応する遅延測定
・サブ事象シーケンス465−3:指は、縦方向のスクローリングと互換性のある縦スワイプ移動を実行するがN画素より小さいため、レコグナイザ468の事象定義に対応しない
・サブ事象シーケンス465−4:レコグナイザ468の事象定義に対応するフィンガーリフトオフ検出
【0141】
次にレコグナイザ468は、事象定義の一部としてサブ事象1及び2を正常に認識することにより、サブ事象3の配信の直前に状態事象可能472になるだろう。レコグナイザ468が設定された遅延タッチ開始済フラグ328を有するため、初期タッチサブ事象はヒットビューに送出されない。従って、ビュー480の入力ソース処理440は、サブ事象3の配信の直前に依然として状態入力シーケンス開始のままだろう。
【0142】
レコグナイザ468へのサブ事象3の配信が完了すると、レコグナイザ468の状態は事象不可能476に遷移し、次にレコグナイザ468が、サブ事象のシーケンスが特定の縦スワイプジェスチャ事象の種類に対応しないと判定した(すなわち、レコグナイザ468は、事象が縦スワイプではないと判断した。換言すると、縦スワイプとしての認識474はこの例では発生しない)ことが重要である。ビュー入力ソースハンドラ480に対する入力ソース処理システム440は、その状態を更に更新する。いくつかの実施形態において、事象レコグナイザが事象を認識し始めたことを示すステータス情報を送出する場合、ビュー入力ソースハンドラ480の状態は、入力シーケンス開始状態482から入力シーケンス継続状態484に進むだろう。事象レコグナイザのタッチ取り消しフラグ322が設定されたために事象が認識されずにタッチ又は入力が終了する場合、ビュー入力ソースハンドラ480は入力シーケンス取り消し済状態488になる。あるいは、事象レコグナイザのタッチ取り消しフラグ322が設定されていない場合、ビュー入力ソースハンドラ480は、入力のタッチが終了する際に入力シーケンス終了済状態486になる。
【0143】
事象レコグナイザ468のタッチ取り消しフラグ332が設定されるため、事象レコグナイザ468が事象不可能状態476に遷移する場合、レコグナイザは、タッチ取り消しのサブ事象又はメッセージを事象レコグナイザに対応するヒットビューに送出する。その結果、ビュー入力ソースハンドラ480は状態入力シーケンス取り消し済488に遷移する。
【0144】
いくつかの実施形態において、ビュー入力ソースハンドラ480の他の事象レコグナイザがある場合は、サブ事象のシーケンスを解析し続けてもよいが、サブ事象465−4の配信は、レコグナイザ468により判断されたいずれの事象認識にも密接に関連しない。
【0145】
以下の表は、ビュー入力ソースハンドラ480の状態と共に、上述した事象レコグナイザ468の状態に関連するようなこの例示的なサブ事象シーケンス465の処理を要約した表形式で示す。この例において、レコグナイザ468のタッチ取り消しフラグ332が設定されたため、ビュー入力ソースハンドラ480の状態は入力シーケンス開始445から入力シーケンス取り消し済488に進む。
【0147】
図5Aを参照し、複数の事象レコグナイザを含むビューにより受信されているサブ事象シーケンス520の一例に注目する。例えば、2つの事象レコグナイザ、すなわちスクローリング事象レコグナイザ580及びタップ事象レコグナイザ590を
図5Aに示す。説明のために、
図3Aのビュー検索結果パネル304は、サブ事象シーケンス520の受信、並びにスクローリング事象レコグナイザ580及びタップ事象レコグナイザ590における状態変遷に関連する。尚、この例において、サブ事象520のシーケンスは、タッチセンシティブディスプレイ又はトラックパッドに対するタップフィンガージェスチャを定義するが、同一の事象認識技術が、マウスボタンの押下を検出する等の無数の状況及び/又はプログラムレベルのプログラム階層を利用する実施形態で適用可能である。
【0148】
第1のサブ事象がビュー検索結果パネル304に配信される前、事象レコグナイザ580及び590は、それぞれ、事象認識開始状態582及び592である。タッチサブ事象301−2としてビュー検索結果パネル304に対して能動的に関わる事象レコグナイザ(及びタッチサブ事象301−3としてマップビュー305に対して能動的に関わる事象レコグナイザ)にフィンガーダウン検出521−1サブ事象として配信されるタッチ301に続き、スクローリング事象レコグナイザ580は状態事象可能584に遷移し、同様にタップ事象レコグナイザ590は状態事象可能594に遷移する。これは、タッチ及びスクロールの双方の事象定義が、タッチセンシティブ面でフィンガーダウンを検出すること等のタッチで開始するためである。
【0149】
タップジェスチャ及びスクロールジェスチャのいくつかの定義は、オプションとして、初期タッチと何らかの次のステップとの間の遅延を含んでもよい。本明細書で説明する全ての例において、タップジェスチャ及びスクロールジェスチャの双方に対する事象定義は、第1のタッチサブ事象(フィンガーダウン検出)に後続する遅延サブ事象を認識する。
【0150】
従って、測定遅延521−2サブ事象が事象レコグナイザ580及び590に配信されるため、双方は、それぞれ、事象可能状態584及び594のままである。
【0151】
最後に、フィンガーリフトオフ検出521−3サブ事象は、事象レコグナイザ580及び590に配信される。この場合、タップ及びスクロールの事象定義が異なるため、事象レコグナイザ580及び590の状態遷移は異なる。スクローリング事象レコグナイザ580の場合、状態事象可能のままである次のサブ事象は移動を検出するサブ事象だろう。しかし、配信されたサブ事象がフィンガーリフトオフ検出521−3であるため、スクローリング事象レコグナイザ580は状態事象不可能588に遷移する。しかし、タップ事象定義はフィンガーリフトオフサブ事象で終了する。従って、タップ事象レコグナイザ590は、フィンガーリフトオフ検出521−3サブ事象が配信された後で状態事象認識済596に遷移する。
【0152】
尚、いくつかの実施形態において、
図4B及び
図4Cに関連して上述したように、
図4Bで説明された入力ソース処理440は、ビューレベルで種々の目的のために使用されてもよい。以下の表は、事象レコグナイザ580、590に関連するようなサブ事象シーケンス520の配信及び入力ソース処理440を要約した表形式で示す。
【0154】
図5Bを参照し、複数の事象レコグナイザを含むビューにより受信されているサブ事象シーケンス530の別の例に注目する。例えば、2つの事象レコグナイザ、すなわちスクローリング事象レコグナイザ580及びタップ事象レコグナイザ590を
図5Bに示す。説明のために、
図3Aのビュー検索結果パネル304は、サブ事象シーケンス530の受信、並びにスクローリング事象レコグナイザ580及びタップ事象レコグナイザ590における状態変遷に関連する。尚、この例において、サブ事象530のシーケンスは、タッチセンシティブディスプレイに対するスクロールフィンガージェスチャを定義するが、同一の事象認識技術が、マウスボタンの押下、マウスの移動及びマウスボタンの解放を検出する等の無数の状況、並びに/又はプログラムレベルのプログラム階層を利用する実施形態で適用可能である。
【0155】
第1のサブ事象がビュー検索結果パネル304に対して能動的に関わる事象レコグナイザに配信される前、事象レコグナイザ580及び590は、それぞれ、事象認識開始状態582及び592である。タッチ301に対応するサブ事象の配信(上述したような)に続き、スクローリング事象レコグナイザ580は状態事象可能584に遷移し、同様にタップ事象レコグナイザ590は状態事象可能594に遷移する。
【0156】
測定遅延531−2サブ事象が事象レコグナイザ580及び590に配信されるため、双方は、それぞれ、事象可能状態584及び594に遷移する。
【0157】
次に、フィンガー移動検出531−3サブ事象は事象レコグナイザ580及び590に配信される。この場合、タップ及びスクロールの事象定義が異なるため、事象レコグナイザ580及び590の状態遷移は異なる。スクローリング事象レコグナイザ580の場合、状態事象可能のままである次のサブ事象は移動を検出するサブ事象であるため、スクローリング事象レコグナイザ580は、フィンガー移動検出531−3サブ事象を受信する場合に事象可能状態584のままである。しかし、上述したように、タップの定義がフィンガーリフトオフサブ事象で終了するため、タップ事象レコグナイザ590は状態事象不可能598に遷移する。
【0158】
最後に、フィンガーリフトオフ検出531−4サブ事象は事象レコグナイザ580及び590に配信される。タップ事象レコグナイザは既に事象不可能状態598であり、状態遷移は発生しない。スクローリング事象レコグナイザ580の事象定義は、フィンガーリフトオフを検出して終了する。配信されたサブ事象がフィンガーリフトオフ検出531−4であるため、スクローリング事象レコグナイザ580は状態事象認識済586に遷移する。尚、タッチセンシティブ面上のフィンガー移動が多数の移動サブ事象を生成してもよいため、スクロールは、リフトオフの前に認識され且つリフトオフまで継続してもよい。
【0159】
以下の表は、事象レコグナイザ580、590に関連するようなサブ事象シーケンス530の配信及び入力ソース処理440を要約した表形式で示す。
【0161】
図5Cを参照し、複数の事象レコグナイザを含むビューにより受信されているサブ事象シーケンス540の別の例に注目する。例えば、2つの事象レコグナイザ、すなわちダブルタップ事象レコグナイザ570及びタップ事象レコグナイザ590を
図5Cに示す。説明のために、
図3Aのマップビュー305は、サブ事象シーケンス540の受信、並びにダブルタップ事象レコグナイザ570及びタップ事象レコグナイザ590における状態変遷に関連する。尚、この例において、サブ事象540のシーケンスは、タッチセンシティブディスプレイに対するダブルタップジェスチャを定義するが、同一の事象認識技術が、マウスダブルクリックを検出する等の無数の状況及び/又はプログラムレベルのプログラム階層を利用する実施形態で適用可能である。
【0162】
第1のサブ事象がマップビュー305に対して能動的に関わる事象レコグナイザに配信される前、事象レコグナイザ570及び590は、それぞれ、事象認識開始状態572及び592である。タッチサブ事象301に関連したサブ事象のマップビュー304への配信(上述したような)に続き、ダブルタップ事象レコグナイザ570及びタップ事象レコグナイザ590は、それぞれ、状態事象可能574及び594に遷移する。これは、タップ及びダブルタップの双方の事象定義がタッチセンシティブ面上でフィンガーダウン541−1を検出する等のタッチで開始するためである。
【0163】
測定遅延541−2サブ事象が事象レコグナイザ570及び590に配信されるため、双方は、それぞれ、状態事象可能574及び594のままである。
【0164】
次に、フィンガーリフトオフ検出541−3サブ事象は事象レコグナイザ570及び590に配信される。この場合、タップ及びダブルタップの事象定義が異なるため、事象レコグナイザ580及び590の状態遷移は異なる。タップ事象レコグナイザ590の場合、事象定義の最後のサブ事象がフィンガーリフトオフを検出するサブ事象であるため、タップ事象レコグナイザ590は事象認識済状態596に遷移する。
【0165】
しかし、ユーザが最終的に実行する可能性があることに関係なく遅延が開始しているため、ダブルタップレコグナイザ570は状態事象可能574のままである。完全なタップサブ事象シーケンスが後続するが、ダブルタップの完全な事象認識定義は別の遅延を必要とする。これにより、既に状態事象認識済576であるタップ事象レコグナイザ590と依然として状態事象可能574のままであるダブルタップレコグナイザ570との間のような曖昧な状況が発生する。
【0166】
従って、いくつかの実施形態において、事象レコグナイザは、
図3B及び
図3Cに関連して上述したような排他的フラグ及び排他的例外リストを実現してもよい。本明細書において、タップ事象レコグナイザ590に対する排他的フラグ324が設定され、更にタップ事象レコグナイザ590に対する排他的例外リスト326は、タップ事象レコグナイザ590が状態事象認識済596になった後にいくつかの事象レコグナイザ(ダブルタップ事象レコグナイザ570等)へのサブ事象の配信を許可し続けるように構成されるだろう。
【0167】
タップ事象レコグナイザ590は状態事象認識済596のままであり、サブ事象シーケンス540はダブルタップサブ事象レコグナイザ570に配信され続ける。遅延測定541−4サブ事象、フィンガーダウン検出541−5サブ事象及び遅延測定541−6サブ事象はダブルタップレコグナイザ570を状態事象可能574に維持し、最後のシーケンスのサブ事象540、すなわちフィンガーリフトオフ検出541−7の配信により、ダブルタップレコグナイザ570は状態事象認識済576に遷移する。
【0168】
この時点で、マップビュー305は、タップ事象レコグナイザ590により認識されたシングルタップ事象ではなく、事象レコグナイザ570により認識されたような事象ダブルタップを選択する。ダブルタップ事象を選択するという判断は、設定されるタップ事象レコグナイザ590の排他的フラグ324、ダブルタップ事象を含むタップ事象レコグナイザ590の排他的例外リスト326、並びにタップ事象レコグナイザ590及びダブルタップレコグナイザ570の双方がそれぞれの事象の種類を正常に認識したという事実の組合せを考慮して行われる。
【0169】
以下の表は、事象レコグナイザ570及び590に関連するようなサブ事象シーケンス540の配信、並びにサブ事象処理440を要約した表形式で示す。
【0171】
別の実施形態において、
図5Cの事象の例では、シングルタップ事象レコグナイザがダブルタップ事象レコグナイザを識別する待ちリストを有するため、シングルタップジェスチャは識別されない。その結果、(実行されたとしても)ダブルタップ事象レコグナイザが事象不可能状態になるまで、シングルタップジェスチャは認識されない。ダブルタップジェスチャが認識されるこの例において、ダブルタップジェスチャが認識されるまで、シングルタップ事象レコグナイザは事象可能状態のままだろう。その時点で、シングルタップ事象レコグナイザは事象不可能状態に遷移するだろう。
【0172】
次に、いくつかの実施形態に係る事象認識方法を示すフローチャートである
図6A及び
図6Bに注目する。上述したように、いくつかの実施形態において電子デバイス102であってもよい電子デバイスで方法600を実行する。いくつかの実施形態において、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチセンシティブ面を含んでもよい。あるいは、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチスクリーンを含んでもよい。
【0173】
方法600は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成される。方法600は、ビュー階層の1つ以上のビューを表示し(608)、1つ以上のソフトウェア要素を実行する(610)。各ソフトウェア要素は特定のビューと関連付けられ、各特定のビューは、それぞれ、事象レコグナイザ構造320及び360として
図3B及び
図3Cで説明されたような1つ以上の事象レコグナイザを含む。
【0174】
一般に各事象レコグナイザは、1つ以上のサブ事象に基づいて状態遷移マシンとして実現されてもよい事象定義を含む。状態遷移マシンについては、例えば
図3Bの状態遷移マシン340を参照する。更に事象レコグナイザは、一般に、対象に対する動作を規定する事象ハンドラを含み、事象定義に対応する事象を検出する事象レコグナイザに応答して動作を対象に送出するように構成される。
【0175】
いくつかの実施形態において、
図6Aのステップ612に示されたように、複数の事象レコグナイザのうちの少なくとも1つは、ジェスチャ定義及びジェスチャハンドラを有するジェスチャレコグナイザである。
【0176】
いくつかの実施形態において、
図6Aのステップ614に示されたように、事象定義はユーザジェスチャを定義する。
【0177】
あるいは、事象レコグナイザは事象認識状態のセットを有する(616)。これらの事象認識状態は、少なくとも事象可能状態、事象不可能状態及び事象認識済状態を含んでもよい。
【0178】
いくつかの実施形態において、事象ハンドラは、事象レコグナイザが事象可能状態になる場合に対象に配信するための対応する動作の準備を開始する(618)。
図4A及び
図5A〜
図5Cの例に関連して上述したように、事象レコグナイザ毎に実現された状態遷移マシンは、一般に状態事象認識開始405等の初期状態を含む。事象定義の初期部分を形成するサブ事象を受信することにより、事象可能状態410への状態変化をトリガする。従って、いくつかの実施形態において、事象レコグナイザが状態事象認識開始405から状態事象可能410に遷移するのに伴い、事象レコグナイザの事象ハンドラは、事象が正常に認識された後で事象レコグナイザの対象へ配信するための特定の動作を準備し始めてもよい。
【0179】
一方、いくつかの実施形態において、事象ハンドラは、事象レコグナイザが状態事象不可能420になる場合に対応する動作の準備を終了してもよい(620)。いくつかの実施形態において、対応する動作を終了することは、事象ハンドラの対応する動作のあらゆる準備を取り消すことを含む。
【0180】
タップ事象レコグナイザ590が動作の準備を開始していてもよい(618)ため、
図5Bの例は本実施形態とって有益である。しかし、フィンガー移動検出531−3サブ事象がタップ事象レコグナイザ590に配信されると、レコグナイザ590は事象不可能状態598、578に遷移する。その時点で、タップ事象レコグナイザ590は、準備を開始した(618)動作の準備を終了してもよい(620)。
【0181】
いくつかの実施形態において、事象ハンドラは、事象レコグナイザが事象認識済状態になる場合に対象に配信するための対応する動作の準備を完了する(622)。マップビュー305に対して能動的に関わる事象レコグナイザによりダブルタップが認識されるため、
図5Cの例は本実施形態を示す。それは、いくつかの実現例において、マップビュー305により示された検索結果を選択し且つ/あるいは実行する義務がある事象である。本明細書において、ダブルタップ事象レコグナイザ570がサブ事象シーケンス540から構成されるダブルタップ事象を正常に認識した後、マップビュー305の事象ハンドラは、動作、すなわち起動コマンドを受信したことを示す動作の準備を完了する(622)。
【0182】
いくつかの実施形態において、事象ハンドラは、対応する動作を事象レコグナイザと関連付けられた対象に配信する(624)。引き続き
図5Cの例を参照すると、準備された動作、すなわちマップビュー305の起動コマンドは、マップビュー305と関連付けられた特定の対象に配信される。これは、あらゆる適切なプログラムの方法又は目的であってもよい。
【0183】
あるいは、複数の事象レコグナイザは、1つ以上のサブ事象のシーケンスを並列に個別に処理してもよい(626)。
【0184】
いくつかの実施形態において、それぞれ、
図3B及び
図3Cの排他的フラグ324及び364に関連して上述したように、1つ以上の事象レコグナイザは排他的事象レコグナイザ628として構成されてもよい。事象レコグナイザが排他的事象レコグナイザとして構成される場合、事象配信システムは、排他的事象レコグナイザが事象を認識した後、ビュー階層で能動的に関わるビューに対する他のあらゆる事象レコグナイザ(事象を認識する事象レコグナイザの例外リスト326、366に列挙されたものを除く)が後続のサブ事象(サブ事象の同一のシーケンスの)を受信するのを防止する。また、非排他的事象レコグナイザが事象を認識する場合、事象配信システムは、事象を認識する事象レコグナイザの例外リスト326、366に列挙されたもの(もしあれば)を除き、ビュー階層で能動的に関わるビューに対するあらゆる排他的事象レコグナイザが後続のサブ事象を受信するのを防止する。
【0185】
いくつかの実施形態において、それぞれ、
図3B及び
図3Cの排他的例外リスト326及び366に関連して上述したように、排他的事象レコグナイザは事象例外リストを含んでもよい(630)。上記の
図5Cの説明で示されたように、事象レコグナイザの排他的例外リストは、各事象定義を構成するサブ事象のシーケンスが重なり合う場合でも事象レコグナイザが事象認識を継続できるようにするために使用可能である。従って、いくつかの実施形態において、事象例外リストは、対応する事象定義が反復サブ事象、例えば
図5Cのシンブルタップ/ダブルタップ事象の例を有する事象を含む(632)。
【0186】
あるいは、事象定義はユーザ入力動作を定義してもよい(634)。
【0187】
いくつかの実施形態において、1つ以上の事象レコグナイザは、事象が認識されるまでサブ事象のシーケンスの全てのサブ事象を配信するのを遅延させるように構成されてもよい。
【0188】
方法600は1つ以上のサブ事象のシーケンスを検出し(636)、いくつかの実施形態において、1つ以上のサブ事象のシーケンスは基本のタッチ事象を含んでもよい(638)。基本のタッチ事象は、タッチセンシティブ面上のタッチジェスチャの基本構成要素、例えば最初のフィンガータッチダウン又はスタイラスタッチダウンに関連したデータ、タッチセンシティブ面にわたる複数の指又はスタイラスの移動の開始に関連したデータ、逆方向の2本の指の移動、タッチセンシティブ面からのスタイラスリフトオフ等を含んでもよいがそれらに限定されない。
【0189】
1つ以上のサブ事象のシーケンスのサブ事象は、特に、キー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティックの移動、マウスの移動、マウスボタンの押下、マウスボタンの解放、ペンスタイラスのタッチ、ペンスタイラスの移動、ペンスタイラスの解放、音声命令、検出された眼球運動、生体情報認識入力及び検出されたユーザの生理学的変化を含むがそれらに限定されない多くの形態を含んでよい。
【0190】
方法600は、ビュー階層のビューのうちの1つをヒットビューとして識別する(640)。ヒットビューは、ビュー階層のどのビューが能動的に関わるビューであるかを明らかにする。能動的に関わるビュー303が、タッチサブ事象301がマップビュー305と関連付けられた領域に接触したためにマップビュー305及び検索結果パネル304を含む一例を
図3Aに示す。
【0191】
いくつかの実施形態において、ビュー階層内の第1の能動的に関わるビューは、その第1の能動的に関わるビューと関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成されてもよい(642)。この挙動により、
図3B及び
図3Cに関連して上述したスキッププロパティ(それぞれ、330及び370)を実現できる。スキッププロパティが事象レコグナイザに対して設定される場合、それぞれのサブ事象の配信は、ビュー階層で他の能動的に関わるビューと関連付けられた事象レコグナイザに対して依然として実行される。
【0192】
あるいは、ビュー階層内の第1の能動的に関わるビューは、第1の能動的に関わるビューがヒットビューでない限り、第1の能動的に関わるビューと関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成されてもよい(644)。この挙動により、
図3B及び
図3Cに関連して上述した条件付きスキッププロパティ(それぞれ、332及び372)を実現できる。
【0193】
いくつかの実施形態において、ビュー階層内の第2の能動的に関わるビューは、第2の能動的に関わるビューと関連付けられた事象レコグナイザ及び第2の能動的に関わるビューの祖先と関連付けられた事象レコグナイザへのそれぞれのサブ事象の配信を防止するように構成される(646)。この挙動により、
図3B及び
図3Cに関連して上述した停止プロパティ(それぞれ、328及び368)を実現できる。
【0194】
方法600は、ビュー階層内で能動的に関わるビュー毎にそれぞれのサブ事象を事象レコグナイザに配信する(648)。いくつかの実施形態において、ビュー階層で能動的に関わるビューに対する事象レコグナイザは、サブ事象のシーケンスの次のサブ事象を処理する前に各サブ事象を処理する。あるいは、ビュー階層で能動的に関わるビューに対する事象レコグナイザは、各サブ事象を処理しつつサブ事象認識を判断する。
【0195】
いくつかの実施形態において、ビュー階層で能動的に関わるビューに対する事象レコグナイザは、1つ以上のサブ事象のシーケンスを同時に処理してもよい(650)。あるいは、ビュー階層で能動的に関わるビューに対する事象レコグナイザは、1つ以上のサブ事象のシーケンスを並列に処理してもよい。
【0196】
いくつかの実施形態において、1つ以上の事象レコグナイザは、事象レコグナイザが事象を認識するまでサブ事象のシーケンスの1つ以上のサブ事象を配信するのを遅延させるように構成されてもよい(652)。この挙動は遅延した事象を反映する。例えば、多数のタップジェスチャが可能であるビューのシングルタップジェスチャを考える。その場合、タップ事象は「タップ+遅延」レコグナイザになる。本質的に、事象レコグナイザは、この挙動を実現する場合、サブ事象のシーケンスが実際に事象定義に対応することを確定するまで事象認識を遅延させる。受信側ビューが取り消された事象に適切に応答できない場合、この挙動は適切だろう。いくつかの実施形態において、事象レコグナイザは、サブ事象のシーケンスが事象定義に対応しないことを確定するまで、事象認識ステータスをそれぞれの能動的に関わるビューに更新するのを遅延させる。
図3B及び
図3Cに関連して上述したように、遅延タッチ開始済フラグ328、368、遅延タッチ終了フラグ330、370及びタッチ取り消しフラグ332、372は、サブ事象配信技術を調節するために提供され、事象レコグナイザ及びビューステータス情報は特定のニーズに更新される。
【0197】
図7A〜
図7Sは、いくつかの実施形態に係る同時に開いているアプリケーションを移動する事象レコグナイザにより認識された例示的なユーザインタフェース及びユーザ入力を示す。これらの図におけるユーザインタフェースは、
図8A及び
図8B、
図9A〜
図9C、並びに
図10A及び
図10Bにおける処理を含む以下に説明する処理を示すために使用される。
【0198】
以下の多くの例がタッチスクリーンディスプレイ156(タッチセンシティブ面及びディスプレイが組み合わされる)に対する入力を参照して与えられるが、いくつかの実施形態において、デバイスはディスプレイ(例えば、タッチパッド又はトラックパッド)とは別個のタッチセンシティブ面に対する入力を検出する。いくつかの実施形態において、タッチセンシティブ面は、ディスプレイにおける主軸に対応する主軸を有する。これらの実施形態によると、デバイスは、ディスプレイ上のそれぞれの場所に対応する場所におけるタッチセンシティブ面との接触を検出する。このように、タッチセンシティブ面においてデバイスにより検出されたユーザ入力は、タッチセンシティブ面がディスプレイとは別個である場合に電子デバイスのディスプレイ上のユーザインタフェースを操作するためにデバイスにより使用される。本明細書で説明される他のユーザインタフェースに対して同様の方法が使用されてもよいことが理解されるべきである。
【0199】
図7Aは、いくつかの実施形態に係る電子デバイス102上の例示的なユーザインタフェース(「ホーム画面」708)を示す。同様のユーザインタフェースは、電子デバイス102上で実現されてもよい。いくつかの実施形態において、ホーム画面708は、スプリングボードと呼ばれることもあるアプリケーションランチャソフトウェアアプリケーションにより表示される。いくつかの実施形態において、タッチスクリーン156上のユーザインタフェースは、以下の要素、あるいはそれらのサブセット又は上位セットを含む。
【0200】
・セルラ信号及びWi−Fi信号等の無線通信に対する信号強度標識702
・時間704
・バッテリ状態標識706
【0201】
例示的なユーザインタフェースは、複数のアプリケーションアイコン5002(例えば、5002−25〜5002−38)を含む。ホーム画面708から、フィンガージェスチャは、アプリケーションを起動するために使用可能である。例えば、アプリケーションアイコン5002−36に対応する場所におけるタップフィンガージェスチャ701は、電子メールアプリケーションの起動を開始する。
【0202】
図7Bにおいて、アプリケーションアイコン5002−36に対するフィンガージェスチャ701の検出に応答して、電子メールアプリケーションが起動され、電子メールアプリケーションビュー712−1がタッチスクリーン156に表示される。ユーザは、他のアプリケーションを同様に起動してもよい。例えばユーザは、あらゆるアプリケーションビュー712からホームボタン710を押下し、ホーム画面708(
図7A)に戻ってホーム画面708上のそれぞれのアプリケーションアイコン5002に対するフィンガージェスチャにより他のアプリケーションを起動してもよい。
【0203】
図7C〜
図7Gは、ホーム画面708上のそれぞれのアプリケーションアイコン5002に対応する場所におけるそれぞれのフィンガージェスチャを検出することに応答してそれぞれのアプリケーションが順次起動されることと、その結果それぞれのユーザインタフェース(すなわち、それぞれのアプリケーションビュー)が表示されることとを示す。特に、
図7Cは、アプリケーションアイコン5002−32に対するフィンガージェスチャに応答してメディアストアアプリケーションビュー712−2が表示されることを示す。
図7Dにおいて、アプリケーションアイコン5002−30に対するフィンガージェスチャに応答してメモアプリケーションビュー712−3が表示される。
図7Eは、アプリケーションアイコン5002−27に対するフィンガージェスチャに応答してマップアプリケーションビュー712−4が表示されることを示す。
図7Fにおいて、アプリケーションアイコン5002−28に対するフィンガージェスチャに応答して天気アプリケーションビュー712−5が表示される。
図7Gは、アプリケーションアイコン5002−37に対するフィンガージェスチャに応答してウェブブラウザアプリケーションビュー712−6が表示されることを示す。いくつかの実施形態において、開いているアプリケーションのシーケンスは、電子メールアプリケーション、メディアストアアプリケーション、メモアプリケーション、マップアプリケーション、天気アプリケーション及びウェブブラウザアプリケーションの起動に対応する。
【0204】
図7Gは、ユーザインタフェースオブジェクト(例えば、お気に入りアイコン)に対するフィンガージェスチャ703(例えば、タップジェスチャ)を更に示す。いくつかの実施形態において、お気に入りアイコンに対するフィンガージェスチャ703の検出に応答して、ウェブブラウザアプリケーションは、お気に入りのリストをタッチスクリーン156に表示する。同様に、ユーザは、他のジェスチャ(例えば、ユーザが一般にオンスクリーンキーボードを用いて新しいアドレスをタイプするかあるいは表示されたアドレスを変更できるようにするアドレスユーザインタフェースオブジェクトに対するタップジェスチャ、選択されたリンクに対応するウェブページへのナビゲートを開始する表示されたウェブページにおけるリンクのうちのいずれかに対するタップジェスチャ等)により、表示されたアプリケーション(例えば、ウェブブラウザアプリケーション)と対話してもよい。
【0205】
図7Gにおいて、第1の事前定義済み入力(例えば、ホームボタン710に対するダブルクリック705)が検出される。あるいは、複数の指のスワイプジェスチャ(例えば、指の接触707、709及び711の移動により示されるような3本の指のスワイプアップジェスチャ)がタッチスクリーン156で検出される。
【0206】
図7Hは、第1の事前定義済み入力(例えば、ダブルクリック705又は指の接触707、709及び711を含む複数の指のスワイプジェスチャ)の検出に応答して、ウェブブラウザアプリケーションビュー712−6及びアプリケーションアイコン領域716の一部が同時に表示されることを示す。いくつかの実施形態において、第1の事前定義済み入力の検出に応答して、デバイスは、同時に開いているアプリケーションのうちの1つを選択するアプリケーションビュー選択モードを開始し、ウェブブラウザアプリケーションビュー712−6及びアプリケーションアイコン領域716の一部は、アプリケーションビュー選択モードの一部として同時に表示される。アプリケーションアイコン領域716は、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループを含む。この例において、ポータブル電子デバイスは、同時に開いている複数のアプリケーション(例えば、電子メールアプリケーション、メディアストアアプリケーション、メモアプリケーション、マップアプリケーション、天気アプリケーション及びウェブブラウザアプリケーション)を有するが、それら全てが同時に表示されない。
図7Hに示されるように、アプリケーションアイコン領域506は、天気アプリケーション、マップアプリケーション、メモアプリケーション及びメディアストアアプリケーション(すなわち、開いているアプリケーションのシーケンスにおける現在表示されているアプリケーションの直後の4つのアプリケーション、ウェブブラウザアプリケーション)に対するアプリケーションアイコン(例えば、5004−2、5004−4、5004−6及び5004−8)を含む。いくつかの実施形態において、アプリケーションアイコン領域716に表示された、開いているアプリケーションアイコンのシーケンス又は順序は、所定のシーケンスにおける開いているアプリケーション(例えば、天気アプリケーション、マップアプリケーション、メモアプリケーション及びメディアストアアプリケーション)のシーケンスに対応する。
【0207】
図7Hは、ジェスチャ713(例えば、タップジェスチャ)が開いているアプリケーションアイコン5004−8に対して検出されることを更に示す。いくつかの実施形態において、ジェスチャ713の検出に応答して、対応するアプリケーションビュー(例えば、
図7Cのメディアストアアプリケーションビュー712−2)が表示される。
【0208】
図7Hは、左スワイプジェスチャ715がアプリケーションアイコン領域716に対応する場所において検出されることを示す。
図7Iにおいて、左スワイプジェスチャ715の検出に応答して、アプリケーションアイコン領域716におけるアプリケーションアイコン(例えば、5004−2、5004−4、5004−6及び5004−8)がスクロールされる。スクロールの結果、電子メールアプリケーションに対するアプリケーションアイコン5004−12は、前に表示されたアプリケーションアイコン(例えば、5004−2、5004−4、5004−6及び5004−8)の代わりにアプリケーションアイコン領域506に表示される。
【0209】
図7Jにおいて、第1の種類のジェスチャ(例えば、指の接触717、719及び721の移動を含む複数の指の左スワイプジェスチャ)は、ウェブブラウザアプリケーションビュー712−6に対して検出される。
図7Kは、第1の種類のジェスチャの検出に応答して、天気アプリケーションビュー712−5がタッチスクリーン156に表示されることを示す。尚、天気アプリケーションは、開いているアプリケーションのシーケンスにおいてウェブブラウザアプリケーションに隣接する。
【0210】
図7Kは、第1の種類の第2のジェスチャ(例えば、指の接触723、725及び727の移動を含む複数の指の左スワイプジェスチャ)が天気アプリケーションビュー712−5に対して検出されることを更に示す。
図7Lは、第1の種類の第2のジェスチャの検出に応答して、マップアプリケーションビュー712−4がタッチスクリーン156に表示されることを示す。尚、マップアプリケーションは、開いているアプリケーションのシーケンスにおいて天気アプリケーションに隣接する。
【0211】
図7Lは、第1の種類の第3のジェスチャ(例えば、指の接触729、731及び733の移動を含む複数の指の左スワイプジェスチャ)がマップアプリケーションビュー712−4に対して検出されることを更に示す。
図7Mは、第1の種類の第3のジェスチャの検出に応答して、メモアプリケーションビュー712−3がタッチスクリーン156に表示されることを示す。尚、メモアプリケーションは、開いているアプリケーションのシーケンスにおいてマップアプリケーションに隣接する。
【0212】
図7Mは、第1の種類の第4のジェスチャ(例えば、指の接触735、737及び739の移動を含む複数の指の左スワイプジェスチャ)がメモアプリケーションビュー712−3に対して検出されることを更に示す。
図7Nは、第1の種類の第4のジェスチャの検出に応答して、メディアストアアプリケーションビュー712−2がタッチスクリーン156に表示されることを示す。尚、メディアストアアプリケーションは、開いているアプリケーションのシーケンスにおいてメモアプリケーションに隣接する。
【0213】
図7Nは、第1の種類の第5のジェスチャ(例えば、指の接触741、743及び745の移動を含む複数の指の左スワイプジェスチャ)がメディアストアアプリケーションビュー712−2に対して検出されることを更に示す。
図7Oは、第1の種類の第5のジェスチャの検出に応答して、電子メールアプリケーションビュー712−1がタッチスクリーン156に表示されることを示す。尚、電子メールアプリケーションは、開いているアプリケーションのシーケンスにおいてメディアストアアプリケーションに隣接する。
【0214】
図7Oは、第1の種類の第6のジェスチャ(例えば、指の接触747、749及び751の移動を含む複数の指の左スワイプジェスチャ)が電子メールアプリケーションビュー712−1に対して検出されることを更に示す。
図7Pは、第1の種類の第6のジェスチャの検出に応答して、ウェブブラウザアプリケーションビュー712−6がタッチスクリーン156に表示されることを示す。尚、ウェブブラウザアプリケーションは、開いているアプリケーションのシーケンスの一方の端部上にあり、電子メールアプリケーションは開いているアプリケーションのシーケンスの反対側の端部上にある。
【0215】
図7Pは、第2の種類のジェスチャ(例えば、指の接触753、755及び757の移動を含む複数の指の右スワイプジェスチャ)がウェブブラウザアプリケーションビュー712−6に対して検出されることを更に示す。
図7Qは、いくつかの実施形態において、第2の種類のジェスチャの検出に応答して、電子メールアプリケーションビュー712−1がタッチスクリーン156に表示されることを示す。
【0216】
図7Rを参照すると、複数の指のジェスチャ(例えば、指の接触759、761、763、765及び767の移動を含む5本の指のピンチジェスチャ)は、ウェブブラウザアプリケーションビュー712−6に対して検出される。
図7Sは、タッチスクリーン156に対する複数の指のジェスチャを検出している間に、ウェブブラウザアプリケーションビュー712−6及びホーム画面708の少なくとも一部が同時に表示されることを示す。示されるように、ウェブブラウザアプリケーションビュー712−6は縮小表示される。複数の指のジェスチャがタッチスクリーン156で検出されている間、縮小率は複数の指のジェスチャに従って調整される。例えば縮小率は、指の接触759、761、763、765及び767を更にピンチすることで減少する(すなわち、ウェブブラウザアプリケーションビュー712−6は更に縮小表示される)。あるいは、縮小率は、指の接触759、761、763、765及び767を非ピンチすることで増加する(すなわち、ウェブブラウザアプリケーションビュー712−6は、前より大きな寸法で表示される)。
【0217】
いくつかの実施形態において、複数の指のジェスチャの検出が中止される際、ウェブブラウザアプリケーションビュー712−6の表示が中止され、ホーム画面708全体が表示される。あるいは、複数の指のジェスチャの検出が中止される際、ホーム画面708全体が表示されるか又はウェブブラウザアプリケーションビュー712−6がフルスクリーン寸法で表示されるかが判定される。いくつかの実施形態において、複数の指のジェスチャの表示が中止される際、縮小率に基づいて判定が行われる(例えば、複数の指のジェスチャの検出が中止される際にアプリケーションビューが事前定義済みの閾値より小さな寸法で表示される場合、ホーム画面708全体が表示され、複数の指のジェスチャの検出が中止される際にアプリケーションビューが事前定義済みの閾値より大きな寸法で表示される場合、アプリケーションビューは、ホーム画面708を表示することなくフルスクリーン寸法で表示される)。いくつかの実施形態において、更に複数の指のジェスチャの速度に基づいて判定が行われる。
【0218】
図8A及び
図8Bは、いくつかの実施形態に係る事象認識方法800を示すフローチャートである。方法800は、タッチセンシティブディスプレイを備えた電子デバイス(例えば、
図1Bのデバイス102)において実行される(802)。電子デバイスは、少なくとも第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションを実行するように構成される。第1のソフトウェアアプリケーションは、1つ以上のジェスチャレコグナイザの第1のセットを含み、第2のソフトウェアアプリケーションは、1つ以上のビュー及び1つ以上のジェスチャレコグナイザの第2のセットを含む(例えば
図3Fにおいて、アプリケーション133−2はジェスチャレコグナイザ516−4を有し、アプリケーション133−1は、ジェスチャレコグナイザ516−1〜561−3、並びにビュー508、510及び512を有する)。各ジェスチャレコグナイザは、対応するジェスチャハンドラ(例えば、ジェスチャハンドラ552−1はジェスチャレコグナイザ516−1に対応し、ジェスチャハンドラ552−3はジェスチャレコグナイザ516−4に対応する)を有する。1つ以上のジェスチャレコグナイザの第1のセットは、一般に、1つ以上のジェスチャレコグナイザの第2のセットとは異なる。
【0219】
方法800により、ユーザは、バックグラウンドアプリケーション、中断されたアプリケーション又は休止状態のアプリケーション等の電子デバイスのディスプレイに現在表示されていない、開いている非表示アプリケーション(例えば、第1のソフトウェアアプリケーション)をジェスチャにより制御できる。従って、ユーザは、電子デバイスのディスプレイに現在表示されているアプリケーション(例えば、第2のソフトウェアアプリケーション)により提供されないが、現在開いているアプリケーションのうちの1つにより提供される動作(例えば、非表示アプリケーションランチャソフトウェアアプリケーションに対するジェスチャを使用してホーム画面を表示すること又は次のソフトウェアアプリケーションに切り替わること)を実行できる。
【0220】
いくつかの実施形態において、第1のソフトウェアアプリケーションは、アプリケーションランチャ(例えば、スプリングボード)である(804)。例えば、
図7Aに示されたように、アプリケーションランチャは、複数のアプリケーションに対応する複数のアプリケーションアイコン5002を表示する。アプリケーションランチャは、アプリケーションアイコン5002のユーザ選択を受信し(例えば、タッチスクリーン156に対するフィンガージェスチャに基づいて)、ユーザ選択の受信に応答して、選択されたアプリケーションアイコン5002に対応するアプリケーションを起動する。
【0221】
第2のソフトウェアアプリケーションは、一般に、アプリケーションランチャにより起動されたソフトウェアアプリケーションである。
図7A及び
図7Bに示されたように、アプリケーションランチャは、電子メールアプリケーションアイコン5002−36に対するタップジェスチャ701に関する情報を受信し、電子メールアプリケーションを起動する。それに応答して、電子メールアプリケーションは、電子メールアプリケーションビュー712−1をタッチスクリーン156に表示する。第2のアプリケーションは、アプリケーションアイコン5002(
図7A)に対応するあらゆるアプリケーション又はアプリケーションランチャにより起動可能な他のあらゆるアプリケーション(例えば、
図7Cのメディアストアアプリケーション、
図7Dのメモアプリケーション、
図7Eのマップアプリケーション、7Fの天気アプリケーション、
図7Gのウェブブラウザアプリケーション等)であってもよい。方法800の以下の説明において、アプリケーションランチャは、例示的な第1のソフトウェアアプリケーションとして使用され、ウェブブラウザアプリケーションは、例示的な第2のソフトウェアアプリケーションとして使用される。
【0222】
いくつかの実施形態において、電子デバイスは、プログラム階層における2つのソフトウェアアプリケーション、すなわちアプリケーションランチャ及び他の1つのソフトウェアアプリケーション(一般に、電子デバイス102のタッチスクリーン156に表示された1つ以上のビューに対応するソフトウェアアプリケーション)しか有さない。
【0223】
いくつかの実施形態において、第1のソフトウェアアプリケーションはオペレーティングシステムアプリケーションである(806)。本明細書で使用されるように、オペレーティングシステムアプリケーションは、オペレーティングシステム118(
図1A〜
図1C)と統合されるアプリケーションを示す。オペレーティングシステムアプリケーションは、一般に、
図2のコアOSレベル208又はオペレーティングシステムAPIソフトウェア206に常駐する。オペレーティングシステムアプリケーションが、一般にユーザにより取り外し不可であるのに対し、他のアプリケーションは、一般にユーザによりインストール又は削除されてもよい。いくつかの実施形態において、オペレーティングシステムアプリケーションはアプリケーションランチャを含む。いくつかの実施形態において、オペレーティングシステムアプリケーションは、設定アプリケーション(例えば、
図1Cのデバイス/グローバル内部状態134においてシステム設定又は1つ以上の値を表示/変更するアプリケーション)を含む。いくつかの実施形態において、オペレーティングシステムアプリケーションはアクセシビリティモジュール127を含む。いくつかの実施形態において、電子デバイスは、プログラム階層における3つのソフトウェアアプリケーション、すなわちアプリケーションランチャ、設定アプリケーション及び他の1つのアプリケーション(一般に、電子デバイス102のタッチスクリーン156に表示された1つ以上のビューに対応するソフトウェアアプリケーション)しか有さない。
【0224】
電子デバイスは、第2のソフトウェアアプリケーションの1つ以上のビュー(例えば、
図7Gのウェブブラウザアプリケーションビュー712−6)の少なくともサブセットを表示する(808)。
【0225】
いくつかの実施形態において、表示することは、第1のソフトウェアアプリケーションのビューを全く表示することなく第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを表示することを含む(810)。例えば
図7Gにおいて、アプリケーションランチャのビュー(例えば、ホーム画面708)は表示されない。
【0226】
いくつかの実施形態において、表示することは、他のいずれかのアプリケーションのビューを表示することなく第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを表示することを含む(812)。例えば
図7Gにおいて、ウェブブラウザアプリケーションの1つ以上のビューしか表示されない。
【0227】
第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを表示している間、電子デバイスは、タッチセンシティブディスプレイに対するタッチ入力(例えば、タッチダウン事象及びタッチアップ事象を含むジェスチャ703、指の接触707、709及び711のタッチダウン、タッチスクリーン156にわたる指の接触707、709及び711の移動、並びに指の接触707、709及び711のリフトオフを含む別のジェスチャ)のシーケンスを検出する(814)。タッチ入力のシーケンスは、1つ以上のタッチ入力の第1の部分及び第1の部分に後続する1つ以上のタッチ入力の第2の部分を含む。本明細書で使用されるように、「シーケンス」という用語は、1つ以上のタッチ事象が発生する順序を示す。例えば、指の接触707、709及び711を含むタッチ入力のシーケンスにおいて、第1の部分は、指の接触707、709及び711のタッチダウンを含んでもよく、第2の部分は、指の接触707、709及び711の移動、並びに指の接触707、709及び711のリフトオフを含んでもよい。
【0228】
いくつかの実施形態において、1つ以上のタッチ入力の第1の部分におけるタッチ入力が第2のソフトウェアアプリケーションの表示されたビューのうちの少なくとも1つに少なくとも部分的に重なり合っている間に検出が行われる(816)。いくつかの実施形態において、タッチ入力が第2のソフトウェアアプリケーションの表示されたビューのうちの少なくとも1つに少なくとも部分的に重なり合うが、第1のソフトウェアアプリケーションは、1つ以上のタッチ入力の第1の部分を受信する。例えばアプリケーションランチャは、表示されないが、ウェブブラウザ(
図7G)の表示されたビューに対するタッチ入力の第1の部分を受信する。
【0229】
タッチ入力のシーケンスを検出する第1の段階の間(818)、電子デバイスは、1つ以上のタッチ入力の第1の部分を第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションに配信し(820)(例えば、
図3Dの事象ディスパッチャモジュール315を使用して)、1つ以上のタッチ入力の第1の部分を認識する1つ以上のマッチングジェスチャレコグナイザを第1のセットのジェスチャレコグナイザから識別し(822)(例えば、
図3Dの第1のセットの各ジェスチャレコグナイザ(一般に、各受信側ジェスチャレコグナイザ)の事象比較部3033を使用して)、1つ以上のマッチングジェスチャレコグナイザに対応する(例えば、
図3Dの対応する事象ハンドラ319を起動する)1つ以上のジェスチャハンドラにより1つ以上のタッチ入力の第1の部分を処理する(824)。
【0230】
いくつかの実施形態において、タッチ入力のシーケンスを検出する第1の段階は、1つ以上のタッチ入力の第1の部分を検出する段階である。
【0231】
配信動作(820)に関して、いくつかの実施形態において、第1のソフトウェアアプリケーションは、1つ以上の入力の第1の部分を受信した後に1つ以上のタッチ入力の第1の部分を第1のセットのジェスチャレコグナイザの少なくともサブセットに配信し、第2のソフトウェアアプリケーションは、1つ以上の入力の第1の部分を受信した後に1つ以上のタッチ入力の第1の部分を第2のセットのジェスチャレコグナイザの少なくともサブセットに配信する。いくつかの実施形態において、電子デバイス又は電子デバイスの事象ディスパッチャモジュール(例えば、
図3Dの315)は、1つ以上のタッチ入力の第1の部分を第1のセット及び第2のセットのジェスチャレコグナイザの少なくともサブセットに配信する(例えば
図3Fにおいて、事象ディスパッチャモジュール315は、1つ以上のタッチ入力の第1の部分をジェスチャレコグナイザ516−1、516−2及び516−4に配信する)。
【0232】
例えば、指の接触707、709及び711を含むフィンガージェスチャがタッチスクリーン156で検出される(
図7G)場合、タッチダウン事象は、アプリケーションランチャの1つ以上のジェスチャレコグナイザ及びウェブブラウザアプリケーションの1つ以上のジェスチャレコグナイザに配信される。別の例において、タップジェスチャ703(
図7G)のタッチダウン事象は、アプリケーションランチャの1つ以上のジェスチャレコグナイザ及びウェブブラウザアプリケーションの1つ以上のジェスチャレコグナイザに配信される。
【0233】
いくつかの実施形態において、第1のセットのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識しない(例えば、検出された事象とジェスチャ定義又はジェスチャとの不一致が完成しない)場合、1つ以上のタッチ入力の第1の部分を処理することは、ヌル操作を実行することを含む(例えばデバイスは、表示されたユーザインタフェースを更新しない)。
【0234】
いくつかの実施形態において、電子デバイスは、1つ以上のタッチ入力の第1の部分をレコグナイザ1つ以上のマッチングジェスチャレコグナイザを第2のセットのジェスチャレコグナイザから識別する。電子デバイスは、1つ以上のマッチングジェスチャレコグナイザに対応する1つ以上のジェスチャハンドラにより1つ以上のタッチ入力の第1の部分を処理する。例えば、ウェブブラウザアプリケーションの1つ以上のジェスチャレコグナイザに配信されたタップジェスチャ703(
図7G)に応答して、ウェブブラウザアプリケーションのマッチングジェスチャレコグナイザ(例えば、
図7Gのお気に入りアイコンに対するタップジェスチャを認識するジェスチャレコグナイザ)は、タッチスクリーン156にお気に入りのリストを表示することでタップジェスチャ703を処理する。
【0235】
いくつかの実施形態において、第1の段階に後続するタッチ入力のシーケンスを検出する第2の段階の間、電子デバイスは、1つ以上のタッチ入力の第2の部分を第2のソフトウェアアプリケーションに配信することなく第1のソフトウェアアプリケーションに配信し(
図8Bの826)(例えば、
図3Dの事象ディスパッチャモジュール315を使用して)、タッチ入力のシーケンスを認識する第2のマッチングジェスチャレコグナイザを1つ以上のマッチングジェスチャレコグナイザから識別し(例えば、
図3Dの各マッチングジェスチャレコグナイザの事象比較部3033を使用して)、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する。いくつかの実施形態において、タッチ入力のシーケンスを検出する第2の段階は、1つ以上のタッチ入力の第2の部分を検出する段階である。
【0236】
例えば、指の接触707、709及び711を含むフィンガージェスチャがタッチスクリーン156で検出される(
図7G)場合、タッチの移動及びリフトオフの事象は、タッチ事象をウェブブラウザアプリケーションに配信することなくアプリケーションランチャの1つ以上のジェスチャレコグナイザに配信される。電子デバイスは、アプリケーションランチャのマッチングジェスチャレコグナイザ(例えば、3本の指のスワイプアップジェスチャレコグナイザ)を識別し、3本の指のスワイプアップジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する。
【0237】
一般に、第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションより優先される(例えば、プログラム階層において)ため、第2のソフトウェアアプリケーションは、第2の段階の間に1つ以上のタッチ入力の第2の部分を受信しない。従って、いくつかの実施形態において、第1のソフトウェアアプリケーションのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識する場合、第1のソフトウェアアプリケーションの1つ以上のジェスチャレコグナイザは、1つ以上のタッチ入力の第2の後続部分を排他的に受信する。また、第2のソフトウェアアプリケーションのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分に一致しないため、第2のソフトウェアアプリケーションは、第2の段階の間に1つ以上のタッチ入力の第2の部分を受信しなくてもよい。
【0238】
いくつかの実施形態において、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理することは、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループをタッチセンシティブディスプレイの第1の事前定義済み領域に表示することと、第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを同時に表示することとを含む(834)。例えば
図7Hにおいて、事前定義済み領域716におけるアプリケーションアイコン5004は、電子デバイスの同時に開いているアプリケーションに対応する。いくつかの実施形態において、事前定義済み領域716におけるアプリケーションアイコン5004は、開いているアプリケーションのシーケンスに従って表示される。
図7Hにおいて、電子デバイスは、事前定義済み領域716及びウェブブラウザアプリケーションビュー712−6のサブセットを同時に表示する。
【0239】
いくつかの実施形態において、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理することは、第1のソフトウェアアプリケーションの1つ以上のビューを表示することを含む(828)。例えば、複数の指のピンチジェスチャ(
図7R)に応答して、電子デバイスはホーム画面708(
図7A)を表示する。いくつかの実施形態において、第1のソフトウェアアプリケーションの1つ以上のビューを表示することは、他のいずれかのソフトウェアアプリケーション(例えば、
図7A)に対応するビューを同時に表示することなく第1のソフトウェアアプリケーションの1つ以上のビューを表示することを含む。
【0240】
いくつかの実施形態において、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理することは、第2のソフトウェアアプリケーションの1つ以上のビューの表示を第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換する(例えば、
図7Aのホーム画面708を表示する)ことを含む(830)。従って、第2のソフトウェアアプリケーションの1つ以上のビューの表示は、第1のソフトウェアアプリケーションの1つ以上のビューが表示された後に中止される。いくつかの実施形態において、第2のソフトウェアアプリケーションの1つ以上のビューの表示を第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換することは、他のいずれかのソフトウェアアプリケーション(
図7A)に対応するビューを同時に表示することなく第1のソフトウェアアプリケーションの1つ以上のビューを表示することを含む。
【0241】
いくつかの実施形態において、電子デバイスは、第1のソフトウェアアプリケーション、第2のソフトウェアアプリケーション及び第3のソフトウェアアプリケーションを同時に実行する(832)。いくつかの実施形態において、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理することは、第2のソフトウェアアプリケーションの表示された1つ以上のビューを第3のソフトウェアアプリケーションの1つ以上のビューに置換することを含む。例えば、複数の指のスワイプジェスチャに応答して、電子デバイスは、ウェブブラウザアプリケーションビュー712−6の表示を天気アプリケーションビュー712−5の表示に置換する(
図7J及び
図7K)。いくつかの実施形態において、第2のソフトウェアアプリケーションの表示された1つ以上のビューを第3のソフトウェアアプリケーションの1つ以上のビューに置換することは、他のいずれかのソフトウェアアプリケーションに対応するビューを同時に表示することなく第3のソフトウェアアプリケーションの1つ以上のビューを表示することを含む。いくつかの実施形態において、第3のソフトウェアアプリケーションは、開いているアプリケーションのシーケンスにおいて第2のソフトウェアアプリケーションに隣接する。
【0242】
いくつかの実施形態において、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理することは、設定アプリケーションを起動することを含む。例えば、10本の指のタップジェスチャに応答して、電子デバイスは設定アプリケーションを起動する。
【0243】
尚、方法800に関して上述した処理の詳細は、以下に説明する方法900にも同様に適用可能である。簡潔にするために、以下においてこれら詳細は繰り返さない。
【0244】
図9A〜
図9Cは、事象認識方法900を示すフローチャートである。方法900は、タッチセンシティブディスプレイを備えた電子デバイスにおいて実行される(902)。電子デバイスは、少なくとも第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションを実行するように構成される。第1のソフトウェアアプリケーションは、1つ以上のジェスチャレコグナイザの第1のセットを含み、第2のソフトウェアアプリケーションは、1つ以上のビュー及び1つ以上のジェスチャレコグナイザの第2のセットを含む。各ジェスチャレコグナイザは対応するジェスチャハンドラを有する。いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットは、1つ以上のジェスチャレコグナイザの第2のセットとは異なる。
【0245】
方法900により、ユーザは、バックグラウンドアプリケーション、中断されたアプリケーション又は休止状態のアプリケーション等の電子デバイスのディスプレイに現在表示されていない、開いている非表示アプリケーション(例えば、第1のソフトウェアアプリケーション)をジェスチャにより制御できる。従って、ユーザは、電子デバイスのディスプレイに現在表示されているアプリケーション(例えば、第2のソフトウェアアプリケーション)により提供されないが、現在開いているアプリケーションのうちの1つにより提供される動作(例えば、非表示アプリケーションランチャソフトウェアアプリケーションに対するジェスチャを使用してホーム画面を表示すること又は次のソフトウェアアプリケーションに切り替わること)を実行できる。
【0246】
いくつかの実施形態において、第1のソフトウェアアプリケーションはアプリケーションランチャ(例えば、スプリングボード)である(904)。いくつかの実施形態において、第1のソフトウェアアプリケーションはオペレーティングシステムアプリケーションである(906)。方法900の以下の説明において、アプリケーションランチャは、例示的な第1のソフトウェアアプリケーションとして使用され、ウェブブラウザアプリケーションは、例示的な第2のソフトウェアアプリケーションとして使用される。
【0247】
電子デバイスは、1つ以上のビュー(例えば、
図7Gのウェブブラウザアプリケーションビュー712−6)の第1のセットを表示する(908)。1つ以上のビューの第1のセットは、第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを含む。例えば、第2のソフトウェアアプリケーションは、複数のアプリケーションビュー(例えば、
図3Dのアプリケーション133−1のアプリケーションビュー317)を有してもよく、電子デバイスは、複数のアプリケーションビューのうちの少なくとも1つのビューを表示する。いくつかの実施形態において、サブセットは、第2のソフトウェアアプリケーションの1つ以上のビュー全体を含む。
【0248】
いくつかの実施形態において、1つ以上のビューの第1のセットを表示することは、第1のソフトウェアアプリケーションのビュー(例えば、
図7Gのウェブブラウザアプリケーションビュー712−6)を全く表示することなく1つ以上のビューの第1のセットを表示することを含む(910)。
【0249】
いくつかの実施形態において、1つ以上のビューの第1のセットを表示することは、他のいずれかのソフトウェアアプリケーションのビューを表示することなく1つ以上のビューの第1のセットを表示することを含む(912)。例えば
図7Gにおいて、ウェブブラウザアプリケーションの1つ以上のビューしか表示されない。
【0250】
1つ以上のビューの第1のセットを表示している間、電子デバイスは、タッチセンシティブディスプレイに対するタッチ入力のシーケンスを検出し(914)、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識するかを判定する(920)。例えば、ウェブブラウザアプリケーションビュー712−6(
図7G)を表示している間、デバイスは、アプリケーションランチャに対するジェスチャレコグナイザがタッチ入力の第1の部分を認識するかを判定する。タッチ入力のシーケンスは、1つ以上のタッチ入力の第1の部分及び第1の部分に後続する1つ以上のタッチ入力の第2の部分(すなわち、第2の部分は第1の部分の後である)を含む。
【0251】
いくつかの実施形態において、タッチ入力のシーケンスは、第2のソフトウェアアプリケーションの表示された1つ以上のビューのうちの少なくとも1つに少なくとも部分的に重なり合う(916)。例えば、アプリケーションランチャは、表示されないが、ウェブブラウザアプリケーションビュー712−6(
図7G)に対するタッチ入力の第1の部分を受信する。
【0252】
いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識すると判定する前に、電子デバイスは、1つ以上のタッチ入力の第1の部分を第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションに同時に配信する(918)。例えば、アプリケーションランチャ及びウェブブラウザアプリケーションの双方は、アプリケーションランチャの少なくとも1つのジェスチャレコグナイザがタッチダウン事象を認識すると判定する前に、指の接触707、709及び711(
図7G)のタッチダウン事象を受信する。
【0253】
1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識すると判定することに従って(
図9Bの922)、電子デバイスは、タッチ入力のシーケンスを第2のソフトウェアアプリケーションに配信することなく第1のソフトウェアアプリケーションに配信し(924)、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識するかを判定し(926)、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識すると判定することに従って、タッチ入力のシーケンスを認識する1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(928)。
【0254】
例えば、3本の指の接触707、709及び711のタッチダウン及びタッチの移動がタッチスクリーン156で検出される(
図7G)場合、電子デバイスは、アプリケーションランチャの少なくとも3本の指のスワイプアップジェスチャレコグナイザがタッチ入力を認識することを識別する。その後、電子デバイスは、後続のタッチ事象(例えば、指の接触707、709及び711のリフトオフ)をウェブブラウザアプリケーションに配信することなくアプリケーションランチャに配信する。電子デバイスは、3本の指のスワイプアップジェスチャレコグナイザがタッチ入力のシーケンスを認識することを更に識別し、3本の指のスワイプアップジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する。
【0255】
いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理することは、第1のソフトウェアアプリケーションの1つ以上のビューを表示することを含む(930)。例えば、複数の指のピンチジェスチャ(
図7R)の検出に応答して、電子デバイスはホーム画面708(
図7A)を表示する。
【0256】
いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理することは、1つ以上のビューの第1のセットの表示を第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換する(例えば、アプリケーションランチャソフトウェアアプリケーションの一部である
図7Aのホーム画面708を表示する)ことを含む(932)。
【0257】
いくつかの実施形態において、電子デバイスは、第1のソフトウェアアプリケーション、第2のソフトウェアアプリケーション及び第3のソフトウェアアプリケーションを同時に実行し、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理することは、1つ以上のビューの第1のセットを第3のソフトウェアアプリケーションの1つ以上のビューに置換することを含む(934)。いくつかの実施形態において、1つ以上のビューの第1のセットを第3のソフトウェアアプリケーションの1つ以上のビューに置換することは、他のいずれかのソフトウェアアプリケーションに対応するビューを同時に表示することなく第3のソフトウェアアプリケーションの1つ以上のビューを表示することを含む。例えば、複数の指のスワイプジェスチャに応答して、電子デバイスは、ウェブブラウザアプリケーションビュー712−6の表示を天気アプリケーションビュー712−5の表示に置換する(
図7J及び
図7K)。
【0258】
いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理することは、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループをタッチセンシティブディスプレイの第1の事前定義済み領域に表示することと、1つ以上のビューの少なくともサブセットを同時に表示することとを含む(936)。例えば
図7Hにおいて、事前定義済み領域716におけるアプリケーションアイコン5004は、電子デバイスの同時に開いているアプリケーションに対応する。いくつかの実施形態において、事前定義済み領域716におけるアプリケーションアイコン5004は、開いているアプリケーションのシーケンスに従って表示される。
図7Hにおいて、電子デバイスは、事前定義済み領域716及びウェブブラウザアプリケーションビュー712−6のサブセットを同時に表示する。
【0259】
1つ以上のジェスチャレコグナイザの第1のセットのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識しないと判定することに従って(
図9Cの938)、電子デバイスは、タッチ入力のシーケンスを第2のソフトウェアアプリケーションに配信し(940)、1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識するかを判定し(942)、1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識すると判定することに従って、タッチ入力のシーケンスを認識する1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(944)。
【0260】
例えば、1つ以上のタッチ入力の第1の部分がタッチジェスチャ(例えば、
図7Gの703)であり、且つアプリケーションランチャのジェスチャレコグナイザがタップジェスチャを認識しない場合、電子デバイスは、タップジェスチャをウェブブラウザアプリケーションに配信し、ウェブブラウザアプリケーションの少なくとも1つのジェスチャレコグナイザがタップジェスチャを認識するかを判定する。ウェブブラウザアプリケーション(又はウェブブラウザアプリケーションのジェスチャレコグナイザ)がお気に入りアイコンに対するタップジェスチャ703を認識する場合、電子デバイスは、対応するジェスチャハンドラによりタップジェスチャ703を処理する。
【0261】
図10A及び
図10Bは、いくつかの実施形態に係る事象認識方法を示すフローチャートである。尚、方法600、800及び900に関して上述した処理の詳細は、以下に説明する方法1000にも同様に適用可能である。簡潔にするために、以下においてこれら詳細は繰り返さない。
【0262】
方法1000は、ある内部状態(例えば、
図1Cのデバイス/グローバル内部状態134)の電子デバイスにおいて実行される(1002)。電子デバイスは、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成される。
【0263】
方法1000において、少なくとも1つのジェスチャレコグナイザは複数のジェスチャ定義を有する。これにより、ジェスチャレコグナイザが種々の別個の動作モードで動作しやすくする。例えばデバイスは、通常の動作モード及びアクセシビリティ動作モードを有してもよい。通常の動作モードにおいて、次のアプリケーションジェスチャは、アプリケーション間を移動するために使用され、3本の指の左スワイプジェスチャとして定義される。アクセシビリティ動作モードにおいて、3本の指の左スワイプジェスチャは、異なる機能を実行するために使用される。従って、3本の指の左スワイプとは異なるジェスチャは、次のアプリケーションジェスチャ(例えば、アクセシビリティ動作モードでの4本の指の左スワイプジェスチャ)に対応するためにアクセシビリティ動作モードで必要とされる。次のアプリケーションジェスチャと関連付けられた多数のジェスチャ定義を有することにより、デバイスは、現在の動作モードに依存して次のアプリケーションジェスチャのジェスチャ定義のうちの1つを選択できる。これにより、種々の動作モードでジェスチャレコグナイザを使用する際に柔軟性を提供する。いくつかの実施形態において、多数のジェスチャ定義を含む複数のジェスチャレコグナイザは、動作モードに依存して調整される(例えば、通常の動作モードで3本の指により実行されたジェスチャは、アクセシビリティ動作モードで4本の指により実行される)。
【0264】
いくつかの実施形態において、内部状態は、アクセシビリティ動作モード用の1つ以上の設定を含む(1016)(例えば内部状態は、デバイスがアクセシビリティ動作モードで動作しているかを示す)。
【0265】
いくつかの実施形態において、ソフトウェアは、アプリケーションランチャ(例えば、スプリングボード)である(1018)か、あるいはそれを含む。
【0266】
いくつかの実施形態において、ソフトウェアは、オペレーティングシステムアプリケーション(例えば、デバイスのオペレーティングシステムと統合されたアプリケーション)である(1020)か、あるいはそれを含む。
【0267】
電子デバイスは、ビュー階層の1つ以上のビューを表示する(1004)。
【0268】
電子デバイスは、1つ以上のソフトウェア要素を実行する(1006)。各ソフトウェア要素は、特定のビューと関連付けられ(例えば
図3Dにおいて、アプリケーション133−1は1つ以上のアプリケーションビュー317を有する)、特定のビューの各々は、1つ以上の事象レコグナイザ(例えば、
図3Dの事象レコグナイザ325)を含む。各事象レコグナイザは、1つ以上のサブ事象に基づく1つ以上の事象定義と、事象ハンドラ(例えば、
図3Dのジェスチャ定義3035及び事象配信情報3039における対応する事象ハンドラに対する参照)とを有する。事象ハンドラは、対象に対する動作を規定し、1つ以上の事象定義のうちの特定の事象定義(例えば、事象レコグナイザが多数の事象定義を有する場合に1つ以上の事象定義から選択された事象定義又は事象レコグナイザが1つの事象定義しか有さない場合の唯一の事象定義)に対応する事象を検出する事象レコグナイザに応答して動作を対象に送出するように構成される。
【0269】
電子デバイスは、1つ以上のサブ事象のシーケンスを検出する(1008)。
【0270】
電子デバイスは、ビュー階層のビューのうちの1つをヒットビューとして識別する(1010)。ヒットビューは、ビュー階層のどのビューが能動的に関わるビューであるかを明らかにする。
【0271】
電子デバイスは、ビュー階層内で能動的に関わるビュー毎にそれぞれのサブ事象を事象レコグナイザに配信する(1012)。いくつかの実施形態において、ビュー階層における1つ以上の能動的に関わるビューはヒットビューを含む。いくつかの実施形態において、ビュー階層における1つ以上の能動的に関わるビューは、デフォルトビュー(例えば、アプリケーションランチャのホーム画面708)を含む。
【0272】
ビュー階層における能動的に関わるビューに対する少なくとも1つの事象レコグナイザは複数の事象定義を有し、そのうちの1つが電子デバイスの内部状態に従って選択される(1014)。例えば事象レコグナイザ325−1は、複数の事象定義(例えば、
図3Dの3037−1及び3037−2)を有する。いくつかの実施形態において、事象レコグナイザ325−1は、デバイス/グローバル内部状態134(
図1C)における1つ以上の値に基づいて事象レコグナイザ325−1における複数のジェスチャ定義のうちの1つを選択する。その後、少なくとも1つの事象レコグナイザは、選択された事象定義に従ってサブ事象のシーケンスにおける次のサブ事象を処理する前に各サブ事象を処理する。いくつかの実施形態において、ビュー階層における能動的に関わるビューに対する2つ以上の事象レコグナイザの各々は複数の事象定義を有し、そのうちの1つが電子デバイスの内部状態に従って選択される。そのような実施形態において、2つ以上の事象レコグナイザのうちの少なくとも1つは、選択された事象定義に従ってサブ事象のシーケンスにおける次のサブ事象を処理する前に各サブ事象を処理する。
【0273】
例えば
図7J及び
図7Kは、次のアプリケーションのアプリケーションビューの表示を開始する次のアプリケーションジェスチャを示す。いくつかの実施形態において、アプリケーションランチャは、3本の指の左スワイプジェスチャに一致するジェスチャ定義を含む次のアプリケーションジェスチャレコグナイザを含む。この例のために、次のアプリケーションジェスチャレコグナイザが4本の指の左スワイプジェスチャに対応するジェスチャ定義を更に含むと仮定する。デバイス/グローバル内部状態134における1つ以上の値がデフォルト値に設定される場合、次のアプリケーションジェスチャレコグナイザは、3本の指の左スワイプジェスチャ定義を使用し、4本の指の左スワイプジェスチャ定義を使用しない。デバイス/グローバル内部状態134における1つ以上の値が変更される(例えば、
図1Cのアクセシビリティモジュール127を使用することで)場合、次のアプリケーションジェスチャレコグナイザは、4本の指の左スワイプジェスチャ定義を使用し、3本の指の左スワイプジェスチャ定義を使用しない。従って、この例において、デバイス/グローバル内部状態134における1つ以上の値が変更される場合、4本の指の左スワイプジェスチャは、次のアプリケーションのアプリケーションビューの表示を開始する。
【0274】
同様に、
図7R及び
図7Sは、ウェブブラウザアプリケーションビュー712−6を縮小表示することと、5本の指のピンチジェスチャの検出に応答してホーム画面708の少なくとも一部を表示することとをホーム画面ジェスチャが開始することを示す。デバイス/グローバル内部状態134及びホーム画面ジェスチャレコグナイザにおけるジェスチャ定義に基づいて、4本の指のピンチジェスチャ、3本の指のピンチジェスチャ又は他のあらゆる適切なジェスチャは、ウェブブラウザアプリケーションビュー712−6を縮小表示することと、ホーム画面708の少なくとも一部を表示することとを開始するために使用されてもよい。
【0275】
いくつかの実施形態において、複数の事象定義は、第1の数の指による第1のスワイプジェスチャに対応する第1の事象定義及び第1の数の指とは異なる第2の数の指による第2のスワイプジェスチャに対応する第2の事象定義を含む(1020)。例えば、各ジェスチャレコグナイザの複数の事象定義は、3本の指のスワイプジェスチャ及び4本の指のスワイプジェスチャを含んでもよい。
【0276】
いくつかの実施形態において、複数の事象定義は、第1の数の指による第1の種類の第1のジェスチャに対応する第1の事象定義及び第1の数の指とは異なる第2の数の指による第1の種類の第2のジェスチャに対応する第2の事象定義(例えば、1本の指のタップジェスチャ及び2本の指のタップジェスチャ、2本の指のピンチジェスチャ及び3本の指のピンチジェスチャ等)を含む。
【0277】
いくつかの実施形態において、複数の事象定義は、第1のジェスチャに対応する第1の事象定義及び第1のジェスチャとは異なる第2のジェスチャに対応する第2の事象定義(例えば、スワイプジェスチャ及びピンチジェスチャ、スワイプジェスチャ及びタップジェスチャ等)を含む。
【0278】
いくつかの実施形態において、複数の事象定義の各定義は、各事象定義が各事象レコグナイザ以外の能動的に関わるビューに対するいずれかの事象レコグナイザの事象定義に対応しないと判定すること(電子デバイスにより)と電子デバイスの内部状態とに従って各事象レコグナイザに対して選択される(1022)。
【0279】
例えば各事象レコグナイザは、2つの事象定義、すなわち一般に通常の動作モードに対して使用される3本の指の左スワイプジェスチャに対応する第1の事象定義と、一般にアクセシビリティ動作モードに対して使用される4本の指の左スワイプジェスチャに対応する第2の事象定義とを有してもよい。電子デバイスがアクセシビリティ動作モードで動作するように電子デバイスの内部状態が設定される場合、電子デバイスは、第2の事象定義に対する4本の指の左スワイプジェスチャが能動的に関わるビューに対する他のあらゆる事象レコグナイザにより使用されるかを判定する。4本の指の左スワイプジェスチャは、能動的に関わるビューに対する他のあらゆる事象レコグナイザにより使用されない場合、アクセシビリティ動作モードで各ジェスチャレコグナイザに対して選択される。一方、4本の指の左スワイプジェスチャが能動的に関わるビューに対する他のあらゆる事象レコグナイザにより使用される場合、3本の指の左スワイプジェスチャは、アクセシビリティ動作モードでも各ジェスチャレコグナイザに対して使用される。これにより、2つ以上の事象レコグナイザが望ましくなく同一のジェスチャに応答することを防止する。
【0280】
いくつかの実施形態において、複数の事象定義の各定義は、各事象定義が各事象レコグナイザ以外の事象レコグナイザ(能動的に関わるビュー及び他のあらゆるビューに対する事象レコグナイザを含む)の事象定義に対応しないと判定すること(電子デバイスにより)と電子デバイスの内部状態とに従って各事象レコグナイザに対して選択される。
【0281】
いくつかの実施形態において、ビュー階層における能動的に関わるビューに対する2つ以上の事象レコグナイザの各々は、複数の事象定義を有し、複数の事象定義の各事象定義は、各事象定義が各事象レコグナイザ以外の2つ以上の事象定義を含むいずれかの事象レコグナイザに対して選択されたいずれかの事象定義に対応しないと判定すること(電子デバイスにより)と電子デバイスの内部状態とに従って各事象レコグナイザに対して選択される(1024)。
【0282】
例えば能動的に関わるビューは、第1のジェスチャレコグナイザ及び第2のジェスチャレコグナイザを有してもよい。この例において、第1のジェスチャレコグナイザは、一般に通常の動作モードに対して使用される3本の指の左スワイプジェスチャに対応する第1の事象定義と、一般にアクセシビリティ動作モードに対して使用される4本の指の左スワイプジェスチャに対応する第2の事象定義とを有してもよい。第2のジェスチャレコグナイザは、一般に通常の動作モードに対して使用される2本の指の左スワイプジェスチャに対応する第3の事象定義と、一般にアクセシビリティ動作モードに対して使用される4本の指の左スワイプジェスチャに対応する第4の事象定義とを有する。電子デバイスがアクセシビリティモードで動作するように電子デバイスの内部状態が設定される場合、電子デバイスは、第2の事象定義を満たす4本の指の左スワイプジェスチャが2つ以上の事象定義を含む他のいずれかの事象レコグナイザ(例えば、第2の事象ジェスチャレコグナイザ)に対して選択されるかを判定する。4本の指の左スワイプジェスチャは、2つ以上の事象定義を含む他のいずれかの事象レコグナイザに対して選択されない場合、アクセシビリティ動作モードで第1のジェスチャレコグナイザに対して選択される。その結果、4本の指の左スワイプジェスチャは、第1のジェスチャレコグナイザに対して既に選択されているため、第2のジェスチャレコグナイザに対して選択されない。その代わりに、2本の指の左スワイプジェスチャは、第1のジェスチャレコグナイザを含む2つ以上の事象定義を含む他のいずれかのジェスチャレコグナイザに対して選択されないため、第2のジェスチャレコグナイザに対して選択される。別の例において、能動的に関わるビューは、第2のジェスチャレコグナイザを有さずに第1のジェスチャレコグナイザ及び第3のジェスチャレコグナイザを有する。第3のジェスチャレコグナイザは、一般に通常の動作モードに対して使用される第3の事象定義(2本の指の左スワイプジェスチャに対応する)と、一般にアクセシビリティ動作モードに対して使用される3本の指の左スワイプジェスチャに対応する第5の事象定義とを有する。アクセシビリティ動作モードにおいて、3本の指の左スワイプジェスチャは、2つ以上の事象定義を含む他のいずれかのジェスチャレコグナイザに対して選択されないため、第3のジェスチャレコグナイザに対して選択可能である。
【0283】
上述の例は複数の指の左スワイプジェスチャに対して説明されたが、上述の方法は、あらゆる方向のスワイプジェスチャ(例えば、右スワイプジェスチャ、スワイプアップジェスチャ、スワイプダウンジェスチャ及び/又はあらゆる斜めのスワイプジェスチャ)、あるいは他のあらゆる種類のジェスチャ(例えば、タップジェスチャ、ピンチジェスチャ、非ピンチジェスチャ等)に当てはまる。
【0284】
いくつかの実施形態において、選択された事象定義に従って各サブ事象を処理することは、ビュー階層を含むソフトウェアとは異なる第1のソフトウェアアプリケーションの1つ以上のビューを表示する(例えば
図7Sにおいて、ソフトウェアの1つ以上のビュー及びホーム画面708の一部を含むユーザインタフェース712−6の少なくとも一部を同時に表示する)ことを含む(1026)。
【0285】
いくつかの実施形態において、少なくとも1つの事象レコグナイザは、ビュー階層の1つ以上のビューの表示をビュー階層を含むソフトウェアとは異なる第1のソフトウェアアプリケーションの1つ以上のビュー(例えば、
図7Aのホーム画面708)の表示に置換することで各サブ事象を処理する(1028)。
【0286】
いくつかの実施形態において、少なくとも1つの事象レコグナイザは、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループを電子デバイスのディスプレイの第1の事前定義済み領域に表示することと、ビュー階層の1つ以上のビュー(例えば、
図7Hの開いているアプリケーションアイコン5004及びユーザインタフェース712−6の少なくとも一部)の少なくともサブセットを同時に表示することとにより各サブ事象を処理する(1030)。例えば電子デバイスは、通常の動作モードでの3本の指のスワイプアップジェスチャ及びアクセシビリティ動作モードでの4本の指の左スワイプアップジェスチャに応答して、開いているアプリケーションアイコンのグループ及びビュー階層の1つ以上のビューの少なくともサブセットを同時に表示する。
【0287】
いくつかの実施形態によると、
図11は、上述の本発明の原理に従って構成された電子デバイス1100を示す機能ブロック図である。デバイスの機能ブロックは、本発明の原理を実行するようにハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せにより実現されてもよい。
図11に示される機能ブロックは、上述の本発明の原理を実現するように組み合わされるかあるいはサブブロックに分割されてもよいことが当業者により理解される。従って、本明細書の説明は、本明細書で説明される機能ブロックのあらゆる可能な組合せ又は分割、あるいは更なる定義を支持してもよい。
【0288】
図11に示されるように、電子デバイス1100は、タッチ入力を受信するように構成されたタッチセンシティブディスプレイユニット1102と、タッチセンシティブディスプレイユニット1102に結合された処理ユニット1106とを備える。いくつかの実施形態において、処理ユニット1106は、実行ユニット1108と、表示有効ユニット1110と、検出ユニット1112と、配信ユニット1114と、識別ユニット1116と、タッチ入力処理ユニット1118とを備える。
【0289】
処理ユニット1106は、少なくとも第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションを実行する(例えば、実行ユニット1108により)ように構成される。第1のソフトウェアアプリケーションは、1つ以上のジェスチャレコグナイザの第1のセットを含み、第2のソフトウェアアプリケーションは、1つ以上のビュー及び1つ以上のジェスチャレコグナイザの第2のセットを含む。各ジェスチャレコグナイザは対応するジェスチャハンドラを有する。処理ユニット1106は、第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。処理ユニット1106は、第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを表示している間、タッチセンシティブディスプレイユニット1102に対するタッチ入力のシーケンスを検出する(例えば、検出ユニット1112により)ように構成される。タッチ入力のシーケンスは、1つ以上のタッチ入力の第1の部分及び第1の部分に後続する1つ以上のタッチ入力の第2の部分を含む。処理ユニット1106は、タッチ入力のシーケンスを検出する第1の段階の間、1つ以上のタッチ入力の第1の部分を第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションに配信し(例えば、配信ユニット1114により)、1つ以上のタッチ入力の第1の部分を認識する1つ以上のマッチングジェスチャレコグナイザを第1のセットのジェスチャレコグナイザから識別し(例えば、識別ユニット1116により)、且つ1つ以上のマッチングジェスチャレコグナイザに対応する1つ以上のジェスチャハンドラにより1つ以上のタッチ入力の第1の部分を処理する(例えば、タッチ入力処理ユニット1118により)ように構成される。
【0290】
いくつかの実施形態において、処理ユニット1106は、1つ以上のタッチ入力の第1の部分におけるタッチ入力が第2のソフトウェアアプリケーションの表示されたビューのうちの少なくとも1つに少なくとも部分的に重なり合っている間、タッチ入力のシーケンスを検出する(例えば、検出ユニット1112により)ように構成される。
【0291】
いくつかの実施形態において、処理ユニット1106は、第1のソフトウェアアプリケーションのビューを全く表示することなく第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。
【0292】
いくつかの実施形態において、処理ユニット1106は、他のいずれかのアプリケーションのビューを表示することなく第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。
【0293】
いくつかの実施形態において、処理ユニット1106は、第1の段階に後続するタッチ入力のシーケンスを検出する第2の段階の間、1つ以上のタッチ入力の第2の部分を第2のソフトウェアアプリケーションに配信することなく第1のソフトウェアアプリケーションに配信し(例えば、配信ユニット1114により)、タッチ入力のシーケンスを認識する第2のマッチングジェスチャレコグナイザを1つ以上のマッチングジェスチャレコグナイザから識別し(例えば、識別ユニット1116により)、且つ各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する(例えば、タッチ入力処理ユニット1118により)ように構成される。
【0294】
いくつかの実施形態において、処理ユニット1106は、第1のソフトウェアアプリケーションの1つ以上のビューの表示を有効にすることにより、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。
【0295】
いくつかの実施形態において、処理ユニット1106は、第2のソフトウェアアプリケーションの1つ以上のビューの表示を第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換することにより、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。
【0296】
いくつかの実施形態において、処理ユニット1106は、第1のソフトウェアアプリケーション、第2のソフトウェアアプリケーション及び第3のソフトウェアアプリケーションを同時に実行し(例えば、実行ユニット1108により)、且つ第2のソフトウェアアプリケーションの表示された1つ以上のビューを第3のソフトウェアアプリケーションの1つ以上のビューに置換することにより、各マッチングジェスチャレコグナイザに対応するジェスチャハンドラによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1102に対する表示有効ユニット1110により)ように構成される。
【0297】
いくつかの実施形態において、処理ユニット1106は、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループの表示をタッチセンシティブディスプレイユニット1102の第1の事前定義済み領域において有効にし(例えば、表示有効ユニット1110により)、且つ第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットの同時表示を有効にする(例えば、表示有効ユニット1110により)ように構成される。
【0298】
いくつかの実施形態において、第1のソフトウェアアプリケーションはアプリケーションランチャである。
【0299】
いくつかの実施形態において、第1のソフトウェアアプリケーションはオペレーティングシステムアプリケーションである。
【0300】
いくつかの実施形態によると、
図12は、上述の本発明の原理に従って構成された電子デバイス1200を示す機能ブロック図である。デバイスの機能ブロックは、本発明の原理を実行するようにハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せにより実現されてもよい。
図12に示される機能ブロックは、上述の本発明の原理を実現するように組み合わされるかあるいはサブブロックに分割されてもよいことが当業者により理解される。従って、本明細書の説明は、本明細書で説明される機能ブロックのあらゆる可能な組合せ又は分割、あるいは更なる定義を支持してもよい。
【0301】
図12に示されるように、電子デバイス1200は、タッチ入力を受信するように構成されたタッチセンシティブディスプレイユニット1202と、タッチセンシティブディスプレイユニット1202に結合された処理ユニット1206とを備える。いくつかの実施形態において、処理ユニット1206は、実行ユニット1208と、表示有効ユニット1210と、検出ユニット1212と、判定ユニット1214と、配信ユニット1216と、タッチ入力処理ユニット1218とを備える。
【0302】
処理ユニット1206は、少なくとも第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションを実行する(例えば、実行ユニット1208により)ように構成される。第1のソフトウェアアプリケーションは、1つ以上のジェスチャレコグナイザの第1のセットを含み、第2のソフトウェアアプリケーションは、1つ以上のビュー及び1つ以上のジェスチャレコグナイザの第2のセットを含む。各ジェスチャレコグナイザは対応するジェスチャハンドラを有する。処理ユニット1206は、1つ以上のビューの第1のセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1210により)ように構成される。1つ以上のビューの第1のセットは、第2のソフトウェアアプリケーションの1つ以上のビューの少なくともサブセットを含む。処理ユニット1206は、1つ以上のビューの第1のセットを表示している間、タッチセンシティブディスプレイユニットに対するタッチ入力のシーケンスを検出する(例えば、検出ユニット1212により)ように構成される。タッチ入力のシーケンスは、1つ以上のタッチ入力の第1の部分及び第1の部分に後続する1つ以上のタッチ入力の第2の部分を含む。処理ユニット1206は、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識するかを判定する(例えば、判定ユニット1214により)ように構成される。処理ユニット1206は、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識すると判定することに従って、タッチ入力のシーケンスを第2のソフトウェアアプリケーションに配信することなく第1のソフトウェアアプリケーションに配信し(例えば、配信ユニット1216により)、且つ1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識するかを判定する(例えば、判定ユニット1214により)ように構成される。処理ユニット1206は、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識すると判定することに従って、タッチ入力のシーケンスを認識する1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(例えば、タッチ入力処理ユニット1218により)ように構成される。処理ユニット1206は、1つ以上のジェスチャレコグナイザの第1のセットのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識しないと判定することに従って、タッチ入力のシーケンスを第2のソフトウェアアプリケーションに配信し(例えば、配信ユニット1216により)、且つ1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識するかを判定する(例えば、判定ユニット1214により)ように構成される。処理ユニット1206は、1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザがタッチ入力のシーケンスを認識すると判定することに従って、タッチ入力のシーケンスを認識する1つ以上のジェスチャレコグナイザの第2のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(例えば、タッチ入力処理ユニット1218により)ように構成される。
【0303】
いくつかの実施形態において、タッチ入力のシーケンスは、第2のソフトウェアアプリケーションの表示された1つ以上のビューのうちの少なくとも1つに少なくとも部分的に重なり合う。
【0304】
いくつかの実施形態において、処理ユニット1206は、第1のソフトウェアアプリケーションを全く表示することなく1つ以上のビューの第1のセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1210により)ように構成される。
【0305】
いくつかの実施形態において、処理ユニット1206は、他のいずれかのアプリケーションのビューを表示することなく1つ以上のビューの第1のセットの表示を有効にする(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1210により)ように構成される。
【0306】
いくつかの実施形態において、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザが1つ以上のタッチ入力の第1の部分を認識すると判定する前に、処理ユニット1206は、1つ以上のタッチ入力の第1の部分を第1のソフトウェアアプリケーション及び第2のソフトウェアアプリケーションに同時に配信する(例えば、配信ユニット1216により)ように構成される。
【0307】
いくつかの実施形態において、第1のソフトウェアアプリケーションはアプリケーションランチャである。
【0308】
いくつかの実施形態において、第1のソフトウェアアプリケーションはオペレーティングシステムアプリケーションである。
【0309】
いくつかの実施形態において、処理ユニット1206は、第1のソフトウェアアプリケーションの1つ以上のビューを表示することを有効にすることにより、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1208により)ように構成される。
【0310】
いくつかの実施形態において、処理ユニット1206は、1つ以上のビューの第1のセットの表示を第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換することにより、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1208により)ように構成される。
【0311】
いくつかの実施形態において、処理ユニット1206は、第1のソフトウェアアプリケーション、第2のソフトウェアアプリケーション及び第3のソフトウェアアプリケーションを同時に実行する(例えば、実行ユニット1208により)ように構成される。処理ユニット1206は、1つ以上のビューの第1のセットを第3のソフトウェアアプリケーションの1つ以上のビューに置換することにより、1つ以上のジェスチャレコグナイザの第1のセットの少なくとも1つのジェスチャレコグナイザによりタッチ入力のシーケンスを処理する(例えば、タッチセンシティブディスプレイユニット1202に対する表示有効ユニット1210により)ように構成される。
【0312】
いくつかの実施形態において、処理ユニット1206は、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループの表示をタッチセンシティブディスプレイユニット1202の第1の事前定義済み領域において有効にし(例えば、表示有効ユニット1210により)、且つ1つ以上のビューの第1のセットの少なくともサブセットを同時に表示する(例えば、表示有効ユニット1210により)ように構成される。
【0313】
いくつかの実施形態によると、
図13は、上述の本発明の原理に従って構成された電子デバイス1300を示す機能ブロック図である。デバイスの機能ブロックは、本発明の原理を実行するようにハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せにより実現されてもよい。
図13に示される機能ブロックは、上述の本発明の原理を実現するように組み合わされるかあるいはサブブロックに分割されてもよいことが当業者により理解される。従って、本明細書の説明は、本明細書で説明される機能ブロックのあらゆる可能な組合せ又は分割、あるいは更なる定義を支持してもよい。
【0314】
図13に示されるように、電子デバイス1300は、1つ以上のビューを表示するように構成された表示ユニット1302と、内部状態を格納するように構成されたメモリユニット1304と、表示ユニット1302及びメモリユニット1304に結合された処理ユニット1306とを備える。いくつかの実施形態において、処理ユニット1306は、実行ユニット1308と、表示有効ユニット1310と、検出ユニット1312と、識別ユニット1314と、配信ユニット1316と、事象/サブ事象処理ユニット1318とを備える。いくつかの実施形態において、処理ユニット1306はメモリユニット1304を備える。
【0315】
処理ユニット1306は、複数のビューを有するビュー階層を含むソフトウェアを実行し(例えば、実行ユニット1308により)、ビュー階層の1つ以上のビューの表示を有効にし(例えば、表示ユニット1302に対する表示有効ユニット1310により)、且つ1つ以上のソフトウェア要素を実行する(例えば、実行ユニット1308により)ように構成される。各ソフトウェア要素は特定のビューと関連付けられ、特定のビューの各々は1つ以上の事象レコグナイザを含む。各事象レコグナイザは、1つ以上のサブ事象に基づく1つ以上の事象定義と、事象ハンドラとを有する。事象ハンドラは、対象に対する動作を規定し、1つ以上の事象定義のうちの特定の事象定義に対応する事象を検出する事象レコグナイザに応答して動作を対象に送出するように構成される。処理ユニット1306は、1つ以上のサブ事象のシーケンスを検出し(例えば、検出ユニット1312により)、且つビュー階層のビューのうちの1つをヒットビューとして識別する(例えば、識別ユニット1314により)ように構成される。ヒットビューは、ビュー階層のどのビューが能動的に関わるビューであるかを明らかにする。処理ユニット1306は、ビュー階層内の能動的に関わるビュー毎にそれぞれのサブ事象を事象レコグナイザに配信する(例えば、配信ユニット1316により)ように構成される。ビュー階層における能動的に関わるビューに対する少なくとも1つの事象レコグナイザは複数の事象定義を有し、そのうちの1つが電子デバイスの内部状態に従って選択され、少なくとも1つの事象レコグナイザは、選択された事象定義に従ってサブ事象のシーケンスにおける次のサブ事象を処理する前に各サブ事象を処理する(例えば、事象/サブ事象処理ユニット1318により)。
【0316】
いくつかの実施形態において、複数の事象定義は、第1の数の指による第1のスワイプジェスチャに対応する第1の事象定義及び第1の数の指とは異なる第2の数の指による第2のスワイプジェスチャに対応する第2の事象定義を含む。
【0317】
いくつかの実施形態において、内部状態は、アクセシビリティ動作モードに対する1つ以上の設定を含む。
【0318】
いくつかの実施形態において、複数の事象定義の各定義は、各事象定義が各事象レコグナイザ以外の能動的に関わるビューに対するいずれかの事象レコグナイザの事象定義に対応しないと判定することと電子デバイスの内部状態とに従って各事象レコグナイザに対して選択される。
【0319】
いくつかの実施形態において、ビュー階層における能動的に関わるビューに対する2つ以上の事象レコグナイザの各々は、複数の事象定義を有し、複数の事象定義の各定義は、各事象定義が各事象レコグナイザ以外の2つ以上の事象定義を含むいずれかの事象レコグナイザに対して選択されたいずれかの事象定義に対応しないと判定することと電子デバイスの内部状態とに従って各事象レコグナイザに対して選択される。
【0320】
いくつかの実施形態において、処理ユニット1306は、ビュー階層を含むソフトウェアとは異なる第1のソフトウェアアプリケーションの1つ以上のビューの表示を有効にすることにより、選択された事象定義に従って各サブ事象を処理する(例えば、表示ユニット1302に対する表示有効ユニット1310により)ように構成される。
【0321】
いくつかの実施形態において、処理ユニット1306は、ビュー階層の1つ以上のビューの表示を、ビュー階層を含むソフトウェアとは異なる第1のソフトウェアアプリケーションの1つ以上のビューの表示に置換することにより、各サブ事象を処理する(例えば、表示ユニット1302に対する表示有効ユニット1310により)ように構成される。
【0322】
いくつかの実施形態において、処理ユニット1306は、同時に開いている複数のアプリケーションのうちの少なくともいくつかに対応する、開いているアプリケーションアイコンのグループの表示を表示ユニット1302の第1の事前定義済み領域において有効にし(例えば、表示有効ユニット1310により)、且つビュー階層の1つ以上のビューの少なくともサブセットの同時表示を有効にする(例えば、表示有効ユニット1310により)ように構成される。
【0323】
いくつかの実施形態において、ソフトウェアはアプリケーションランチャである。
【0324】
いくつかの実施形態において、ソフトウェアはオペレーティングシステムアプリケーションである。
【0325】
説明の目的で、特定の実施形態を参照して上記説明を行った。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及びその実際的な応用例を最適に説明するために実施形態を選択して説明した。これにより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。