(57)【特許請求の範囲】
【請求項１】
ディスプレイと、タッチ感知面と、前記タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、
第１のユーザインターフェースを表示することと、
前記第１のユーザインターフェースの表示中に、前記タッチ感知面上の入力を検出することであって、前記入力は前記タッチ感知面上の接触を含む第１の部分と、前記第１の部分の後の、前記接触の強度の変化を含んだ第２の部分とを含む、検出することと、
前記入力の少なくとも前記第１の部分を検出することに応じて、前記入力の少なくとも前記第１の部分に対応する複数のジェスチャレコグナイザを候補ジェスチャレコグナイザとして識別することであって、前記複数のジェスチャレコグナイザは第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザを含み、前記第１のジェスチャレコグナイザは強度に基づくジェスチャレコグナイザであり、前記第２のジェスチャレコグナイザはタップジェスチャレコグナイザである、ことと、
前記第２のジェスチャレコグナイザが、前記第２のジェスチャレコグナイザが前記入力をタップジェスチャとして認識できることを示す状態にあり、前記第１のジェスチャレコグナイザが、前記第１のジェスチャレコグナイザが前記入力を強度に基づくジェスチャとして認識できることを示す状態にある間に、前記入力の前記第２の部分を検出することと、
前記第１のユーザインターフェースの表示中に前記入力の前記第２の部分を検出することに応じて、
前記入力が第１の強度閾値を満足しかつ前記入力が前記タッチ感知面上の接触が検出されてから第１の所定の時間期間の間前記タッチ感知面上に留まることを含む強度入力基準を満足するとの判定に従って、
前記第１のジェスチャレコグナイザを前記入力が強度に基づくジェスチャとして認識されたことを示す状態へと遷移させ、前記入力が強度に基づくジェスチャとして認識されたことを示す状態への前記第１のジェスチャレコグナイザの前記遷移に従って、第１の動作を実行すること、及び
前記第２のジェスチャレコグナイザを前記入力が前記第２のジェスチャレコグナイザによって認識されない見込みであることを示す状態へと遷移させること、並びに
前記入力が前記タッチ感知面上の接触が検出されてから前記第１の所定の時間期間が終了する前に前記タッチ感知面上に留まるのをやめることを含むタップ基準を満足するとの判定に従って、
前記第２のジェスチャレコグナイザを前記入力がタップジェスチャとして認識されたことを示す状態へと遷移させ、前記入力がタップジェスチャとして認識されたことを示す状態への前記第２のジェスチャレコグナイザの前記遷移に従って、前記第１の動作とは異なる第２の動作を実行することと、
を含み、前記複数のジェスチャレコグナイザのそれぞれが、判定を行うそれぞれの状態を有する、方法。
【請求項２】
前記タッチ感知面上の前記入力の前記第２の部分を検出することに応じて、
前記入力が前記強度入力基準を満足するとの前記判定に従って、前記第１のジェスチャレコグナイザを用いて前記入力を処理することを含む前記第１の動作を実行することと、
前記入力が前記タップ基準を満足するとの前記判定に従って、前記第２のジェスチャレコグナイザを用いて前記入力を処理することを含む前記第２の動作を実行することと、
を含む、請求項１に記載の方法。
【請求項３】
前記入力が前記第１の所定の時間期間の間に前記タッチ感知面上に留まるのをやめることを含むタップ基準を前記入力が満足するとの判定に従って、前記第１のジェスチャレコグナイザを、前記入力が前記第１のジェスチャレコグナイザによって認識されない見込みであることを示す状態へと遷移させることを含む、請求項１又は２に記載の方法。
【請求項４】
前記入力が第２の強度閾値を満足すると判定することに応じて、前記第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることを含めて、前記第１のジェスチャレコグナイザを用いて前記入力を処理することを含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記複数のジェスチャレコグナイザは第３のジェスチャレコグナイザを含み、
前記方法は、前記入力が第２の強度閾値を満足すると判定することに応じて、前記第３のジェスチャレコグナイザを用いて前記入力を処理することを含む、請求項１から３のいずれか一項に記載の方法。
【請求項６】
前記第１のジェスチャレコグナイザが、前記第１のジェスチャレコグナイザが前記入力を強度に基づくジェスチャとして認識できることを示す状態にあり、前記第２のジェスチャレコグナイザが、前記第２のジェスチャレコグナイザが前記入力をタップジェスチャとして認識できることを示す状態にあり、前記第３のジェスチャレコグナイザが、前記第３のジェスチャレコグナイザが前記入力を認識できることを示す状態にある間に、前記入力の前記第１の部分に続く、前記接触の強度の変化を含む前記入力の前記第２の部分を検出することと、
前記第１のユーザインターフェースの表示中に前記入力の前記第２の部分を検出することに応じて、
前記入力が前記第２の強度閾値を満足するとの判定に従って、
前記第３のジェスチャレコグナイザを開始された状態へと遷移させること、
前記第１のジェスチャレコグナイザを、前記第１のジェスチャレコグナイザが前記入力を強度に基づくジェスチャとして認識できることを示す前記状態に維持すること、及び
前記第２のジェスチャレコグナイザを、前記第２のジェスチャレコグナイザが前記入力をタップジェスチャとして認識できることを示す前記状態に維持することと、
を含む、請求項５に記載の方法。
【請求項７】
前記第１の強度閾値は前記第２の強度閾値よりも大きい、請求項６に記載の方法。
【請求項８】
前記第１のユーザインターフェースの表示中に前記入力の前記第２の部分を検出することに応じて、
前記入力が前記第２の強度閾値を満足するとの前記判定に続いて、前記入力の強度が変化したとの判定に従って、
前記第３のジェスチャレコグナイザを、前記入力の前記強度が変化したことを示す変更された状態へと遷移させることであって、前記変更された状態が前記開始された状態とは異なる、ことと、
前記第１のジェスチャレコグナイザを、前記第１のジェスチャレコグナイザが前記入力を強度に基づくジェスチャとして認識できることを示す前記状態に維持することと、
前記第２のジェスチャレコグナイザを、前記第２のジェスチャレコグナイザが前記入力をタップジェスチャとして認識できることを示す前記状態に維持することと、
を含む、請求項６又は７に記載の方法。
【請求項９】
前記第１のユーザインターフェースの表示中に前記入力の前記第２の部分を検出することに応じて、
前記入力の前記強度が変化したとの前記判定に続いて、前記入力が前記第１の所定の時間期間後に前記タッチ感知面上に留まるのをやめるとの判定に従って、
前記第２のジェスチャレコグナイザを、前記入力が前記第２のジェスチャレコグナイザによって認識されない見込みであることを示す前記状態へと遷移させることと、
前記第３のジェスチャレコグナイザを、前記入力が認識されたことを示す認識された状態又は前記入力が中止されたことを示す中止された状態へと遷移させることと、
を含む、請求項８に記載の方法。
【請求項１０】
前記入力の前記第１の部分の検出に応じて、第３の動作を実行することを含む、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
前記第３の動作を実行することは、前記第１のユーザインターフェースの少なくとも一部を前記第１のユーザインターフェースの他の部分と視覚的に区別することを含む、請求項１０に記載の方法。
【請求項１２】
前記第３の動作を実行することに続いて、
前記入力が前記強度入力基準を満足するとの前記判定に従って、前記第１の動作を実行することと、
前記入力が前記タップ基準を満足するとの前記判定に従って、前記第２の動作を実行することと、
を含む、請求項１０又は１１に記載の方法。
【請求項１３】
前記第３の動作は前記第１の所定の時間期間の間に開始される、請求項１０から１２のいずれか一項に記載の方法。
【請求項１４】
前記第１の動作を実行することはプレビュー領域を表示することを含む、請求項１から１３のいずれか一項に記載の方法。
【請求項１５】
前記第２の動作を実行することは、前記第１のユーザインターフェースの表示を、前記タッチ感知面上の前記入力の場所に対応する、ソフトウェアアプリケーションの第３のユーザインターフェースと入れ替えることを含む、請求項１から１４のいずれか一項に記載の方法。
【請求項１６】
前記入力が前記強度入力基準を満足するか否かに関係なく、前記入力が前記タップ基準を満足するとの前記判定に従って、前記第２の動作が実行される、請求項１から１５のいずれか一項に記載の方法。
【請求項１７】
前記第１のユーザインターフェースの表示中に前記入力を検出することに応じて、
前記入力が前記第１の所定の時間期間の間前記タッチ感知面上に留まった後、前記入力が前記タッチ感知面上で検出されなくなり、かつ前記入力が前記強度入力基準を満足しない、との判定に従って、前記第２の動作を実行することと、
前記入力が前記第１の所定の時間期間の間前記タッチ感知面上に留まった後、前記入力が前記タッチ感知面上で検出されなくなり、かつ前記入力が前記強度入力基準を満足する、との判定に従って、前記第２の動作の実行を取り止めることと、
を含む、請求項１から１６のいずれか一項に記載の方法。
【請求項１８】
ディスプレイ、タッチ感知面、及び前記タッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイスにおいて使用するための、情報処理装置であって、
第１のユーザインターフェースを表示する手段と、
前記第１のユーザインターフェースの表示中に、前記タッチ感知面上の入力を検出する手段であって、前記入力は前記タッチ感知面上の接触を含む第１の部分と、前記第１の部分の後の、前記接触の強度の変化を含んだ第２の部分とを含む、手段と、
前記入力の少なくとも前記第１の部分を検出することに応じて、前記入力の少なくとも前記第１の部分に対応する複数のジェスチャレコグナイザを候補ジェスチャレコグナイザとして識別する手段であって、前記複数のジェスチャレコグナイザは第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザを含み、前記第１のジェスチャレコグナイザは強度に基づくジェスチャレコグナイザであり、前記第２のジェスチャレコグナイザはタップジェスチャレコグナイザである、手段と、
前記第２のジェスチャレコグナイザが、前記第２のジェスチャレコグナイザが前記入力をタップジェスチャとして認識できることを示す状態にあり、前記第１のジェスチャレコグナイザが、前記第１のジェスチャレコグナイザが前記入力を強度に基づくジェスチャとして認識できることを示す状態にある間に、前記入力の前記第２の部分を検出する手段と、
前記第１のユーザインターフェースの表示中に前記入力の前記第２の部分を検出することに応じて、
前記入力が第１の強度閾値を満足しかつ前記入力が前記タッチ感知面上の接触が検出されてから第１の所定の時間期間の間前記タッチ感知面上に留まることを含む強度入力基準を満足するとの判定に従って、
前記第１のジェスチャレコグナイザを、前記入力が強度に基づくジェスチャとして認識されたことを示す状態へと遷移させ、前記入力が強度に基づくジェスチャとして認識されたことを示す状態への前記第１のジェスチャレコグナイザの前記遷移に従って、第１の動作を実行し、及び
前記第２のジェスチャレコグナイザを、前記入力が前記第２のジェスチャレコグナイザによって認識されない見込みであることを示す状態へと遷移させ、並びに
前記入力が前記タッチ感知面上の接触が検出されてから前記第１の所定の時間期間が終了する前に前記タッチ感知面上に留まるのをやめることを含むタップ基準を満足するとの判定に従って、
前記第２のジェスチャレコグナイザを、前記入力がタップジェスチャとして認識されたことを示す状態へと遷移させ、前記入力がタップジェスチャとして認識されたことを示す状態への前記第２のジェスチャレコグナイザの前記遷移に従って、前記第１の動作とは異なる第２の動作を実行する、手段と、
を備え、前記複数のジェスチャレコグナイザのそれぞれが、判定を行うそれぞれの状態を有する、情報処理装置。
【請求項１９】
ディスプレイと、
タッチ感知面と、
前記タッチ感知面との接触の強度を検出する１つ以上のセンサと、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに請求項１から１７のいずれか一項に記載の方法を実行させる命令を記憶するメモリと、
を備える、電子デバイス。
【請求項２０】
コンピュータに請求項１から１７のいずれか一項に記載の方法を実行させる命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は概して、限定するものではないが、タッチ感知面上の接触の強度を検出するためのセンサを備える電子デバイスを含む、タッチ感知面を備える電子デバイスに関する。
【背景技術】
【０００２】
コンピュータ及び他の電子計算デバイス用の入力デバイスとしてのタッチ感知面の使用は、近年では、著しく増大している。例示的なタッチ感知面としては、タッチパッド及びタッチスクリーンディスプレイが挙げられる。このような面は、ディスプレイ上のユーザインターフェースオブジェクトを操作するために幅広く使用されている。
【０００３】
例示的な操作としては、１つ以上のユーザインターフェースオブジェクトの位置及び／若しくはサイズを調節すること、又はボタンをアクティブにすること、又はユーザインターフェースオブジェクトによって表されるファイル／アプリケーションを開くこと、並びに１つ以上のユーザインターフェースオブジェクトにメタデータを関連付けること、あるいは他の方式でユーザインターフェースを操作することが挙げられる。例示的なユーザインターフェースオブジェクトには、デジタル画像、ビデオ、テキスト、アイコン、ボタンなどの制御要素、及びその他のグラフィックが挙げられる。ユーザは、一部の状況では、ファイル管理プログラム（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のＦｉｎｄｅｒ）、画像管理アプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のＡｐｅｒｔｕｒｅ、ｉＰｈｏｔｏ、Ｐｈｏｔｏｓ）、デジタルコンテンツ（例えば、ビデオ及びミュージック）管理アプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＴｕｎｅｓ）、描画アプリケーション、プレゼンテーションアプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のＫｅｙｎｏｔｅ）、ワードプロセッシングアプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のＰａｇｅｓ）、ウェブサイト作成アプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＷｅｂ）、ディスクオーサリングアプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＤＶＤ）、又はスプレッドシートアプリケーション（例えば、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のＮｕｍｂｅｒｓ）において、ユーザインターフェースオブジェクト上でこのような操作を実行する必要がある。
【０００４】
しかしながら、これらの操作を処理するための既存の方法は、煩雑かつ非効率的である。更には、既存の方法は、必要以上に長い時間を要することにより、エネルギーを浪費する。この後者の考慮事項は、バッテリ動作デバイスにおいては特に重要である。
【発明の概要】
【０００５】
したがって、本開示は電子デバイスに、タッチ入力を処理するためのより高速でより効率的な方法を提供する。かかる方法及びインターフェースは、任意選択的に、タッチ入力を処理するための従来の方法を補完する、又はそれらに置き換わる。かかる方法及びインターフェースは、タッチ入力のカスタマイズされた処理を可能にすることによって、より効率的なヒト−マシンインターフェースを提供する。更に、かかる方法は、タッチ入力を処理するために消費される処理電力を低減し、電力を節約し、不要な／無関係の／重複する入力を低減し、場合によってはメモリの使用を低減する。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０００６】
タッチ感知面を備える電子デバイス用のユーザインターフェースに関連付けられた、上記の欠陥及び他の問題点は、開示されるデバイスによって低減されるか、又は取り除かれる。一部の実施形態では、このデバイスは、デスクトップコンピュータである。一部の実施形態では、このデバイスは、ポータブル（例えば、ノートブックコンピュータ、タブレットコンピュータ、又はハンドヘルドデバイス）である。一部の実施形態では、このデバイスは、タッチパッドを有する。一部の実施形態では、このデバイスは、タッチ感知ディスプレイ（「タッチスクリーン」又は「タッチスクリーンディスプレイ」としても知られる）を有する。一部の実施形態では、このデバイスは、グラフィカルユーザインターフェース（ＧＵＩ）と、１つ以上のプロセッサと、メモリと、複数の機能を実行するためにメモリに記憶された１つ以上のモジュール、プログラム、又は命令セットと、を有する。一部の実施形態では、ユーザは主にタッチ感知面上でのスタイラス及び／又は指の接触及びジェスチャを介してＧＵＩと対話する。一部の実施形態では、機能は、画像編集、描画、プレゼンティング、ワードプロセッシング、ウェブサイト作成、ディスクオーサリング、スプレッドシートの作成、ゲームプレイ、電話をかけること、ビデオ会議、電子メール送信、インスタントメッセージング、トレーニングサポート、デジタル写真撮影、デジタルビデオ撮影、ウェブブラウジング、デジタル音楽の再生、及び／又はデジタルビデオの再生を、任意選択的に含む。これらの機能を実行するための実行可能命令は、非一時的コンピュータ可読記憶媒体又は１つ以上のプロセッサによって実行されるように構成された他のコンピュータプログラム製品に、任意選択的に含まれる。別法として又は加えて、これらの機能を実行する実行可能命令は、任意選択的に、一時的コンピュータ可読記憶媒体又は１つ以上のプロセッサによって実行されるように構成された他のコンピュータプログラム製品に含まれる。
【０００７】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、第１のユーザインターフェースを表示することと、第１のユーザインターフェースの表示中にタッチ感知面上の入力を検出することと、を含む。方法は、第１のユーザインターフェースの表示中に入力を検出することに応じて、第１の所定の時間期間の間に入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行することと、第１の所定の時間期間の間入力が第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作を実行することと、を更に含む。
【０００８】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、第１のユーザインターフェースを表示することと、第１のユーザインターフェースの表示中にタッチ感知面上の入力を検出することと、を含む。方法は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行することと、入力がタッチ感知面を少なくとも所定の距離だけ横切ったことを含むパン基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作を実行することと、を更に含む。
【０００９】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、第１のユーザインターフェースを表示することと、第１のユーザインターフェースの表示中にタッチ感知面上の入力を検出することと、を含む。方法は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の強度閾値を満足しかつ第１の所定の時間期間の間入力がタッチ感知面上に留まることを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行することと、入力が第１の所定の時間期間の間タッチ感知面上に留まるのをやめることを含むタップ基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作を実行することと、を更に含む。
【００１０】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、第１のソフトウェアアプリケーションの第１のユーザインターフェースを表示することであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、表示することと、ディスプレイ上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を検出することと、入力の第１の部分の検出に応じて及び入力が第１の強度閾値を満足することを含むリビール（reveal）基準を入力の第１の部分が満足するとの判定に従って、アプリケーション非依存の所定の命令セットにプレビューコンテンツを提供することを含めて、プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行することと、を含む。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトを視覚的に区別することと、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトの視覚的区別の開始後に、入力の第１の部分に続く入力の第２の部分を受信すること、及び、入力が第２の強度閾値を満足することを含むプレビュー基準を入力の第２の部分が満足するとの判定に従って、第１のユーザインターフェース上に重ねられたプレビュー領域を表示することと、を含む。プレビュー領域はプレビューコンテンツを含む。
【００１１】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、第１のソフトウェアアプリケーションの第１のユーザインターフェースを表示することであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、表示することと、ディスプレイ上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を検出することと、入力の第１の部分の検出に応じて及びプレビュー基準を入力の第１の部分が満たすとの判定に従って、プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行することと、を含む。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース上に重ねられたプレビュー領域を表示することと、入力の第１の部分の検出後に入力の第２の部分を検出することと、接触による入力の第２の部分の検出に応じて、入力の第２の部分がユーザインターフェース入れ替え基準を満たすとの判定に従って、第１のユーザインターフェースの表示を第１のユーザインターフェースとは異なる第２のユーザインターフェースと入れ替えることと、を含む。
【００１２】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、ディスプレイ上にソフトウェアアプリケーションのユーザインターフェースを表示することと、ディスプレイ上でソフトウェアアプリケーションのユーザインターフェースを表示している間に、ソフトウェアアプリケーションのユーザインターフェースに対応する場所におけるタッチ感知面上の入力を検出することと、入力の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力に対応する強度情報を送ることと、を含む。強度情報は、１つ以上のセンサに割り当てられた基準強度、及び検出された入力の強度に対応する特性強度を含む。
【００１３】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、ディスプレイ上にソフトウェアアプリケーションの第１のユーザインターフェースを表示することと、ソフトウェアアプリケーションの第１のユーザインターフェースの表示中に、タッチ感知面上の入力を検出することと、入力の検出中に、入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力の強度の変化を表す第１の進度インジケータの値を提供すること、並びに、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第１の進度インジケータの値に従って第１のユーザインターフェースを更新することと、を含む。
【００１４】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、ディスプレイ上に、オペレーティングシステム内で実行される第１の第三者アプリケーションのユーザインターフェースを表示することを含む。デバイスの機能は、オペレーティングシステムのオペレーティングシステムフレームワークを通して、第１の第三者アプリケーションに曝される。オペレーティングシステムフレームワークは、デバイスが認識できる複数のジェスチャクラスを定義する。第１のジェスチャクラスは、第１のジェスチャ認識基準が満たされるときに、タッチ感知面上で検出された入力を第１のジェスチャとして認識するための、第１のジェスチャ認識基準に関連付けられている。第１の第三者アプリケーションは、インターフェース第１の動作に関して、ユーザインターフェースの第１の部分を第１のジェスチャクラスからの第１のジェスチャに関連付けている。第１の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定している。方法は、ディスプレイ上で第１の第三者アプリケーションのユーザインターフェースを表示している間に、第１の第三者アプリケーションのユーザインターフェースの第１の部分に対応する場所におけるタッチ感知面上の入力を検出することも含む。方法は、入力の検出に応じて、第１のジェスチャ認識基準を入力が満たすとの及び第１の第三者アプリケーションによって指定された第１の強度基準を入力が満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分と関連付けられた第１の動作を実行することと、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分と関連付けられた第１の動作の実行を取り止めることと、を更に含む。
【００１５】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、ディスプレイ上にユーザインターフェースを表示することを含む。方法は、ユーザインターフェースの表示中に、タッチ感知面上の入力を検出することと、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力の検出中に、第１のタイミング基準及び第１の強度入力基準を入力が満足するとの判定に従って、第１の動作を実行することも含む。第１のタイミング基準は、第１の時間期間が経過する間、入力がタッチ感知面上に留まることを要求する。第１の強度入力基準は、入力が第１の時間期間の終わりに又はこれに続いて第１の強度閾値を満足することを要求する。
【００１６】
一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスにおいて、方法が実行される。方法は、ディスプレイ上にユーザインターフェースを表示することを含む。方法は、ユーザインターフェースの表示中に、タッチ感知面上の入力を検出することと、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力の検出中に、アクティブ化強度閾値を入力が満足するとの判定に従って、第１の動作を実行することも含む。アクティブ化強度閾値は、第１の強度値から時間とともに減少する第１の強度閾値成分を含む。
【００１７】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、長い押圧ジェスチャと深い押圧入力との間の区別を行うように、並びに長い押圧ジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。より具体的には、処理ユニットは、第１のユーザインターフェースの表示を可能にし、第１のユーザインターフェースの表示を可能にしている間にタッチ感知面ユニット上の入力を検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、第１の所定の時間期間の間に入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行し、及び、第１の所定の時間期間の間入力が第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作を実行する、ように構成されている。
【００１８】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、パンジェスチャと深い押圧入力との間の区別を行うように、並びにパンジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。より具体的には、処理ユニットは、第１のユーザインターフェースの表示を可能にし、第１のユーザインターフェースの表示を可能にしている間にタッチ感知面ユニット上の入力を検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行し、及び、入力がタッチ感知面を少なくとも所定の距離だけ横切ったことを含むパン基準を入力が満足するとの判定に従って、第２の動作を実行する、ように構成されている。
【００１９】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、タップジェスチャ入力と深い押圧入力との間の区別を行うように、並びにタップジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。かかる実施形態では、処理ユニットは、第１のユーザインターフェースの表示を可能にするように構成されており、第１のユーザインターフェースの表示を可能にしている間にタッチ感知面ユニット上の入力を検出すること、並びに、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１の強度閾値を満足しかつ第１の所定の時間期間の間入力がタッチ感知面上に留まることを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を実行する、及び、入力が第１の所定の時間期間の間タッチ感知面上に留まるのをやめることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作を実行すること、を行うように更に構成されている。
【００２０】
一部の実施形態によれば、電子デバイスは、１つ以上のユーザインターフェースを表示するように構成されたディスプレイユニットと、ユーザ入力を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、第１のソフトウェアアプリケーションの第１のユーザインターフェースであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、第１のユーザインターフェースの表示を可能にし、ディスプレイユニット上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を検出し、入力の第１の部分の検出に応じて及び入力が第１の強度閾値を満足することを含むリビール基準を入力の第１の部分が満足するとの判定に従って、アプリケーション非依存の所定の命令セットにプレビューコンテンツを提供することを含めて、プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行する、ように構成されている。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトを視覚的に区別することと、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトの視覚的区別の開始後に、入力の第１の部分に続く入力の第２の部分を受信すること、及び、入力が第２の強度閾値を満足することを含むプレビュー基準を入力の第２の部分が満足するとの判定に従って、第１のユーザインターフェース上に重ねられたプレビュー領域の表示を可能にすることと、を含む。プレビュー領域はプレビューコンテンツを含む。
【００２１】
一部の実施形態によれば、電子デバイスは、１つ以上のユーザインターフェースを表示するように構成されたディスプレイユニットと、ユーザ入力を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、第１のソフトウェアアプリケーションの第１のユーザインターフェースであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、第１のユーザインターフェースの表示を可能にし、ディスプレイユニット上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を検出し、入力の第１の部分の検出に応じて及びプレビュー基準を入力の第１の部分が満たすとの判定に従って、プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行する、ように構成されている。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース上に重ねられたプレビュー領域の表示を可能にすることと、入力の第１の部分の検出後に入力の第２の部分を検出することと、接触による入力の第２の部分の検出に応じて、入力の第２の部分がユーザインターフェース入れ替え基準を満たすとの判定に従って、第１のユーザインターフェースの表示を第１のユーザインターフェースとは異なる第２のユーザインターフェースと入れ替えることと、を含む。
【００２２】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、ユーザ入力を受けるように構成されたタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するように構成された１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、ディスプレイユニット上での、ソフトウェアアプリケーションのユーザインターフェースの表示を可能にし、ディスプレイユニット上でのソフトウェアアプリケーションのユーザインターフェースの表示を可能にしている間に、ソフトウェアアプリケーションのユーザインターフェースに対応する場所におけるタッチ感知面ユニット上の入力を検出し、入力の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力に対応する強度情報を送る、ように構成されている。強度情報は、１つ以上のセンサに割り当てられた基準強度、及び検出された入力の強度に対応する特性強度を含む。
【００２３】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、ユーザ入力を受けるように構成されたタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するように構成された１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、ディスプレイユニット上での、ソフトウェアアプリケーションの第１のユーザインターフェースの表示を可能にすることと、ソフトウェアアプリケーションの第１のユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット上の入力を検出することと、入力の検出中に、入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力の強度の変化を表す第１の進度インジケータの値を提供すること、並びに、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第１の進度インジケータの値に従って第１のユーザインターフェースを更新することと、を含む。
【００２４】
一部の実施形態によれば、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるように構成されたタッチ感知面ユニットと、タッチ感知面ユニット上の接触の強度を検出するように構成された１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニット。処理ユニットは、ディスプレイユニット上での、オペレーティングシステム内で実行される第１の第三者アプリケーションのユーザインターフェースの表示を可能にするように構成されている。デバイスの機能は、オペレーティングシステムのオペレーティングシステムフレームワークを通して、第１の第三者アプリケーションに曝される。オペレーティングシステムフレームワークは、デバイスが認識できる複数のジェスチャクラスを定義する。第１のジェスチャクラスは、第１のジェスチャ認識基準が満たされるときに、タッチ感知面上で検出された入力を第１のジェスチャとして認識するための、第１のジェスチャ認識基準に関連付けられている。第１の第三者アプリケーションは、インターフェース第１の動作に関して、ユーザインターフェースの第１の部分を第１のジェスチャクラスからの第１のジェスチャに関連付けている。第１の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定している。処理ユニットはまた、ディスプレイユニット上での第１の第三者アプリケーションのユーザインターフェースの表示を可能にしている間に、第１の第三者アプリケーションのユーザインターフェースの第１の部分に対応する場所におけるタッチ感知面上の入力を検出し、入力の検出に応じて、第１のジェスチャ認識基準を入力が満たすとの及び第１の第三者アプリケーションによって指定された第１の強度基準を入力が満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分と関連付けられた第１の動作を実行し、及び、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分と関連付けられた第１の動作の実行を取り止める、ように構成されている。
【００２５】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、ディスプレイユニット上でのユーザインターフェースの表示を可能にし、ユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット上の入力を検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力の検出中に、第１のタイミング基準及び第１の強度入力基準を入力が満足するとの判定に従って、第１の動作を実行する、ように構成されている。第１のタイミング基準は、第１の時間期間が経過する間、入力がタッチ感知面ユニット上に留まることを要求する。第１の強度入力基準は、入力が第１の時間期間の終わりに又はこれに続いて第１の強度閾値を満足することを要求する。
【００２６】
一部の実施形態によれば、電子デバイスは、ユーザインターフェースを表示するように構成されたディスプレイユニットと、接触を受けるためのタッチ感知面ユニットと、タッチ感知面ユニットとの接触の強度を検出するための１つ以上のセンサユニットと、ディスプレイユニット、タッチ感知面ユニット、及び１つ以上のセンサユニットに結合された処理ユニットと、を含む。処理ユニットは、ディスプレイユニット上でのユーザインターフェースの表示を可能にし、ユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット上の入力を検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力の検出中に、アクティブ化強度閾値を入力が満足するとの判定に従って、第１の動作を実行する、ように構成されている。アクティブ化強度閾値は、第１の強度値から時間とともに減少する第１の強度閾値成分を含む。
【００２７】
一部の実施形態によれば、電子デバイスは、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、１つ以上のプロセッサと、メモリと、１つ以上のプログラムと、を含み、１つ以上のプログラムはメモリ内に記憶され、１つ以上のプロセッサによって実行されるように構成されており、１つ以上のプログラムは、本明細書に記載の方法のいずれかの動作を実行するか又は実行させる命令を含む。一部の実施形態では、電子デバイスは、電子デバイスに関連付けられたスタイラスからの信号を検出するための、１つ以上のセンサを含む。一部の実施形態によれば、コンピュータ可読記憶媒体（例えば、非一時的コンピュータ可読記憶媒体、又は別法として、一時的コンピュータ可読記憶媒体）は、内部に命令を記憶しており、その命令は、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサとを備える電子デバイスによって実行されると、本明細書に記載の方法のいずれかの動作を、そのデバイスに実行させる、又は実行させる。一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、メモリと、メモリ内に記憶された１つ以上のプログラムを実行するための１つ以上のプロセッサとを備える電子デバイス上のグラフィカルユーザインターフェースは、上記した方法のいずれかにおいて表示される要素のうちの１つ以上を含み、それらの要素は、本明細書に記載の方法のいずれかにおいて説明されるように、入力に応じて更新される。一部の実施形態によれば、電子デバイスは、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、本明細書に記載の方法のいずれかの動作を実行する又は実行させる手段と、を含む。一部の実施形態によれば、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサとを備える電子デバイス内で使用するための情報処理装置が、本明細書に記載の方法のいずれかの動作を実行する又は実行させる手段を含む。
【００２８】
したがって、ディスプレイと、タッチ感知面と、タッチ感知面との接触の強度を検出するための１つ以上のセンサと、を備える電子デバイスに、タッチ入力の処理のためのより高速でより効率的な方法及びインターフェースを提供し、それにより、かかるデバイスの有効性及び効率、並びにかかるデバイスに関するユーザ満足感が向上する。更に、かかる方法及びインターフェースは、処理電力を低減し、メモリの使用を低減し、バッテリの使用を低減し、かつ／又は、不要な、若しくは無関係の、若しくは重複する入力を低減する。更に、かかる方法及びインターフェースは、タッチ入力を処理するための従来の方法を補し得る、又はそれらに置き換わり得る。
【００２９】
説明される様々な実施形態を良好に理解するため、以下の図面と併せて、以下の「発明を実施するための形態」を参照されたい。ここで、類似の参照番号は、それらの図にわたって、対応する部分を指す。
【図面の簡単な説明】
【００３０】
【図１Ａ】一部の実施形態による、タッチ感知ディスプレイを備えるポータブル多機能デバイスを示すブロック図である。
【図１Ｂ】一部の実施形態による、イベント処理のための例示的な構成要素を示すブロック図である。
【図１Ｃ】一部の実施形態による、イベントオブジェクトの移行を示すブロック図である。
【図２】一部の実施形態による、タッチスクリーンを有するポータブル多機能デバイスを示す。
【図３】一部の実施形態による、ディスプレイ及びタッチ感知面を備える例示的な多機能デバイスのブロック図である。
【図４】一部の実施形態による、例示的な電子スタイラスのブロック図である。
【図５Ａ】一部の実施形態による、タッチ感知面に対するスタイラスの姿勢状態を示す。
【図５Ｂ】一部の実施形態による、タッチ感知面に対するスタイラスの姿勢状態を示す。
【図６Ａ】一部の実施形態による、ポータブル多機能デバイスにおけるアプリケーションのメニューのための例示的なユーザインターフェースを示す。
【図６Ｂ】一部の実施形態による、ディスプレイとは別個のタッチ感知面を備える多機能デバイスのための例示的なユーザインターフェースを示す。
【図７Ａ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｂ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｃ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｄ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｅ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｆ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｇ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｈ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｉ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｊ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｋ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｌ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｍ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｎ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｏ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｐ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｑ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｒ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｓ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｔ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｕ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｖ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｗ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｘ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｙ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７Ｚ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＡＡ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＢＢ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＣＣ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＤＤ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＥＥ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＦＦ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＧＧ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＨＨ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＩＩ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＪＪ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＫＫ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＬＬ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＭＭ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＮＮ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＯＯ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＰＰ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＱＱ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＲＲ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＳＳ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＴＴ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＵＵ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＶＶ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＷＷ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＸＸ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＹＹ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＺＺ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＡＡＡ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図７ＢＢＢ】一部の実施形態による、タッチ入力及び関連付けられた情報を処理するための、例示的なユーザインターフェースを示す。
【図８Ａ】一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図８Ｂ】一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図８Ｃ】一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図８Ｄ】一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図８Ｅ】一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図９Ａ】一部の実施形態による、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図９Ｂ】一部の実施形態による、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図９Ｃ】一部の実施形態による、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図９Ｄ】一部の実施形態による、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図１０Ａ】一部の実施形態による、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図１０Ｂ】一部の実施形態による、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図１０Ｃ】一部の実施形態による、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図１０Ｄ】一部の実施形態による、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。
【図１１Ａ】一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法を示す高レベルのフロー図である。
【図１１Ｂ】一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法を示すフロー図である。
【図１１Ｃ】一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法を示すフロー図である。
【図１１Ｄ】一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法を示すフロー図である。
【図１２Ａ】一部の実施形態による、所定のデータ構造を使用してタッチ入力を処理する方法を示すフロー図である。
【図１２Ｂ】一部の実施形態による、所定のデータ構造を使用してタッチ入力を処理する方法を示すフロー図である。
【図１３Ａ】一部の実施形態による、力ジェスチャ進度インジケータを使用してタッチ入力を処理する方法を示すフロー図である。
【図１３Ｂ】一部の実施形態による、力ジェスチャ進度インジケータを使用してタッチ入力を処理する方法を示すフロー図である。
【図１４Ａ】一部の実施形態による、第三者アプリケーションによって指定された強度基準に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１４Ｂ】一部の実施形態による、第三者アプリケーションによって指定された強度基準に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１４Ｃ】一部の実施形態による、第三者アプリケーションによって指定された強度基準に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１５Ａ】一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１５Ｂ】一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１６Ａ】一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１６Ｂ】一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。
【図１７】一部の実施形態による、電子デバイスの機能ブロック図である。
【図１８】一部の実施形態による、電子デバイスの機能ブロック図である。
【図１９】一部の実施形態による、電子デバイスの機能ブロック図である。
【図２０】一部の実施形態による、電子デバイスの機能ブロック図である。
【図２１】一部の実施形態による、電子デバイスの機能ブロック図である。
【図２２】一部の実施形態による、電子デバイスの機能ブロック図である。
【図２３】一部の実施形態による、電子デバイスの機能ブロック図である。
【発明を実施するための形態】
【００３１】
多くの電子デバイスに、表示されたユーザインターフェースオブジェクトの、タッチ入力に応答した特定の操作を可能にするためのアプリケーションが保存されている。しかしながら、従来の方法及びユーザインターフェースは非効率的である。開示される実施形態は、これらの限界及び欠点に対処する。
【００３２】
以下の図１Ａ〜図１Ｂ、図２、及び図３は、例示的なデバイスの説明を提供する。図４は、例示的な電子スタイラスの説明を提供する。図５Ａ〜図５Ｂは、タッチ感知面に対するスタイラスの姿勢状態を示す。図６Ａ〜図６Ｂ、及び図７Ａ〜図７ＢＢＢは、ウェブページ中の、タッチ入力を命令で処理するための例示的なユーザインターフェースを示す。図８Ａ〜図８Ｅは、長い押圧入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。図９Ａ〜図９Ｄは、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。図１０Ａ〜図１０Ｄは、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法を示すフロー図である。図１１Ａ〜１１Ｄは、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法を示すフロー図である。図１２Ａ〜図１２Ｂは、所定のデータ構造を使用してタッチ入力を処理する方法を示すフロー図である。図１３Ａ〜図１３Ｂは、力ジェスチャ進度インジケータを使用してタッチ入力を処理する方法を示すフロー図である。図１４Ａ〜図１４Ｃは、第三者アプリケーションによって指定された強度基準に基づいてタッチ入力を処理する方法を示すフロー図である。図１５Ａ〜図１５Ｂは、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。図１６Ａ〜図１６Ｂは、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。図７Ａ〜図７ＢＢＢのユーザインターフェースを使用して、図８Ａ〜図８Ｅ、図９Ａ〜図９Ｄ、図１０Ａ〜図１０Ｄ、図１１Ａ〜図１１Ｄ、図１２Ａ〜図１２Ｂ、図１３Ａ〜図１３Ｂ、図１４Ａ〜図１４Ｃ、図１５Ａ〜図１５Ｂ、及び図１６Ａ〜図１６Ｂのプロセスを示す。
例示的なデバイス
【００３３】
ここで、添付図面に実施例が示される実施形態を、詳細に参照する。以下の詳細な説明では、説明されている様々な実施形態の完全な理解を提供するために数多くの具体的な詳細が記載されている。しかしながら、説明されている様々な実施形態は、これらの具体的な詳細を伴わずとも実践し得ることが、当業者には明らかであろう。他の例においては、周知の方法、手順、構成要素、回路、及びネットワークは、実施形態の態様を不必要に不明瞭なものとしないよう、詳細には説明されていない。
【００３４】
本明細書では、第１、第２などの用語は、一部の実施例で、様々な要素を説明するために使用されるが、これらの要素は、それらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素を別の要素と区別するためにのみ使用される。例えば、説明されている様々な実施形態の範囲から逸脱することなく、第１の接触は、第２の接触と称することができ、同様に、第２の接触は、第１の接触と称し得る。第１の接触及び第２の接触は両方接触であるが、文脈がそうではないことを明確に示さない限り、それらは同じ接触ではない。
【００３５】
本明細書で説明される様々な実施形態の説明で使用される用語法は、特定の実施形態を説明することのみを目的とするものであって、限定することを意図するものではない。説明される様々な実施形態の説明及び添付の特許請求の範囲で使用されるとき、単数形「ａ」、「ａｎ」、及び「ｔｈｅ」は、文脈がそうではないことを明確に示さない限り、複数形もまた含むことが意図される。本明細書で使用するとき、用語「及び／又は」が、関連する列挙された項目のうちの１つ以上のすべての可能な任意の組合せを指し、かつこれを含むことをもまた理解されたい。用語「ｉｎｃｌｕｄｅｓ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｍｐｒｉｓｅｓ（含む、備える）」及び／又は「ｃｏｍｐｒｉｓｉｎｇ（含む、備える）」は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、及び／又は構成要素の存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び／又はそれらの群、の存在又は追加を除外しないことが更に理解されるであろう。
【００３６】
本明細書で使用するとき、用語「ｉｆ（〜の場合には）」は、任意選択的に、文脈に応じて「ｗｈｅｎ（〜の時）」、「ｕｐｏｎ（〜すると）」、「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（〜との判定に応じて）」、又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ（〜の検出に応じて）」を意味するものと解釈される。同様に、語句「ｉｆ  ｉｔ  ｉｓ  ｄｅｔｅｒｍｉｎｅｄ（〜と判定される場合には）」又は「ｉｆ（ａ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ）ｉｓ  ｄｅｔｅｃｔｅｄ（（記述される条件又はイベント）が検出される場合には）」は、任意選択的に、文脈に応じて「ｕｐｏｎ  ｄｅｔｅｒｍｉｎｉｎｇ（〜と判定されると）」、又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（〜との判定に応じて）」、又は「ｕｐｏｎ  ｄｅｔｅｃｔｉｎｇ（ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ）（（記述される条件又はイベント）が検出されると）」、又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ（ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ）（（記述される条件又はイベント）の検出に応じて）」を意味するものと解釈される。
【００３７】
電子デバイス、このようなデバイス用のユーザインターフェース、及びこのようなデバイスを使用するための関連処理、の実施形態を説明する。一部の実施形態では、このデバイスは、ＰＤＡ機能及び／又は音楽プレーヤ機能などの、他の機能も含む、モバイル電話機などのポータブル通信デバイスである。ポータブル多機能デバイスの例示的な実施形態としては、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスが挙げられるが、これらに限定されない。タッチ感知面（例えば、タッチスクリーンディスプレイ及び／又はタッチパッド）を備えるラップトップ又はタブレットコンピュータなどの他のポータブル電子デバイスも、任意選択的に、使用される。また、一部の実施形態では、このデバイスはポータブル通信デバイスではなく、タッチ感知面（例えば、タッチスクリーンディスプレイ及び／又はタッチパッド）を備えるデスクトップコンピュータであることも理解されたい。
【００３８】
以下の検討では、ディスプレイ及びタッチ感知面を備える電子デバイスについて説明する。しかし、この電子デバイスは、物理キーボード、マウス、及び／又はジョイスティックなどの、１つ以上の他の物理ユーザインターフェースデバイスを任意選択的に含むことを理解されたい。
【００３９】
このデバイスは、一般的に、描画アプリケーション、プレゼンテーションアプリケーション、ワードプロセッシングアプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、スプレッドシートアプリケーション、ゲームアプリケーション、電話アプリケーション、ビデオ会議アプリケーション、電子メールアプリケーション、インスタントメッセージングアプリケーション、トレーニングサポートアプリケーション、写真管理アプリケーション、デジタルカメラアプリケーション、デジタルビデオカメラアプリケーション、ウェブブラウジングアプリケーション、デジタル音楽プレーヤアプリケーション、及び／又はデジタルビデオプレーヤアプリケーションのうちの１つ以上などの、様々なアプリケーションをサポートする。
【００４０】
本デバイス上で実行される様々なアプリケーションは、タッチ感知面などの、少なくとも１つの共通の物理ユーザインターフェースデバイスを、任意選択的に使用する。タッチ感知面の１つ以上の機能、並びにデバイス上に表示される対応する情報は、アプリケーションごとに、及び／又はそれぞれのアプリケーション内で、任意選択的に、調節及び／又は変更される。このように、デバイスの共通の（タッチ感知面などの）物理アーキテクチャは、ユーザにとって直観的かつ透過的なユーザインターフェースを備える様々なアプリケーションを、任意選択的にサポートする。
【００４１】
ここで、タッチ感知ディスプレイを備えるポータブルデバイスの実施形態に注意を向ける。図１Ａは、一部の実施形態による、タッチ感知ディスプレイシステム１１２を備えるポータブル多機能デバイス１００を示すブロック図である。タッチ感知ディスプレイシステム１１２は、便宜上「タッチスクリーン」と呼ばれる場合があり、単にタッチ感知ディスプレイと呼ばれる場合もある。デバイス１００は、メモリ１０２（任意選択的に、１つ以上の非一時的コンピュータ可読記憶媒体を含む）、メモリコントローラ１２２、１つ以上の処理ユニット（ＣＰＵ）１２０、周辺機器インターフェース１１８、ＲＦ回路１０８、オーディオ回路１１０、スピーカ１１１、マイクロフォン１１３、入出力（Ｉ／Ｏ）サブシステム１０６、他の入力又は制御デバイス１１６、及び外部ポート１２４を含む。デバイス１００は、１つ以上の光センサ１６４を任意選択的に含む。デバイス１００は、デバイス１００（例えば、デバイス１００のタッチ感知ディスプレイシステム１１２などのタッチ感知面）上の接触の強度を検出するための、１つ以上の強度センサ１６５を任意選択的に含む。デバイス１００は、デバイス１００上に触知出力を生成する（例えば、デバイス１００のタッチ感知ディスプレイシステム１１２又はデバイス３００のタッチパッド３５５などの、タッチ感知面上に触知出力を生成する）ための、１つ以上の触知出力生成器１６３を任意選択的に含む。これらの構成要素は、１つ以上の通信バス又は信号ライン１０３を介して任意選択的に通信する。
【００４２】
本明細書及び特許請求の範囲で使用されるとき、用語「触知出力」は、ユーザの触覚でユーザによって検出されることになる、デバイスの従前の位置に対するデバイスの物理的変位、デバイスの構成要素（例えば、タッチ感知面）の、デバイスの別の構成要素（例えば、筐体）に対する物理的変位、又はデバイスの重心に対する構成要素の変位を指す。例えば、デバイス又はデバイスの構成要素が、タッチに敏感なユーザの表面（例えば、ユーザの手の指、手のひら、又は他の部分）に接触している状況において、物理的変位によって生成された触知出力は、デバイス又はデバイスの構成要素の物理的特性の認識された変化に相当する触感として、ユーザによって解釈される。例えば、タッチ感知面（例えば、タッチ感知ディスプレイ又はトラックパッド）の移動は、ユーザによって、物理アクチュエータボタンの「ダウンクリック」又は「アップクリック」として任意選択的に解釈される。場合によっては、ユーザの動作により物理的に押された（例えば、変位された）タッチ感知面に関連付けられた物理アクチュエータボタンの移動がない時でさえ、ユーザは「ダウンクリック」又は「アップクリック」などの触感を感じるであろう。別の実施例として、タッチ感知面の移動は、タッチ感知面の平滑度に変化がない場合であっても、ユーザによって、そのタッチ感知面の「粗さ」として、任意選択的に解釈又は感知される。そのようなユーザによるタッチの解釈は、ユーザの個人的な感覚認知に左右されるものではあるが、大多数のユーザに共通する、多くのタッチの感覚認知が存在する。したがって、触知出力が、ユーザの特定の感覚認知（例えば、「アップクリック」、「ダウンクリック」、「粗さ」）に対応するものと記述される場合、別途記載のない限り、生成された触知出力は、典型的な（又は、平均的な）ユーザの記述された感覚認知を生成するデバイス、又はデバイスの構成要素の物理的変位に対応する。
【００４３】
デバイス１００は、ポータブル多機能デバイスの一実施例に過ぎず、デバイス１００は、示されているものよりも多くの構成要素又は少ない構成要素を任意選択的に有し、２つ以上の構成要素を任意選択的に組み合わせるか、又は、それらの構成要素の異なる構成若しくは配置を任意選択的に有することを理解されたい。図１Ａに示す様々な構成要素は、１つ以上の信号処理回路及び／又は特定用途向け集積回路を含む、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せで実装される。
【００４４】
メモリ１０２は、任意選択的に高速ランダムアクセスメモリを含み、また任意選択的に、１つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの、不揮発性メモリも含む。ＣＰＵ（単数又は複数）１２０及び周辺機器インターフェース１１８などの、デバイス１００の他の構成要素によるメモリ１０２へのアクセスは、メモリコントローラ１２２により任意選択的に制御される。
【００４５】
周辺機器インターフェース１１８を使用して、このデバイスの入力及び出力周辺機器を、ＣＰＵ（単数又は複数）１２０及びメモリ１０２に結合することができる。１つ以上のプロセッサ１２０は、デバイス１００のための様々な機能を実行するため及びデータを処理するために、メモリ１０２に記憶された様々なソフトウェアプログラム及び／又は命令セットを動作させる、又は実行する。
【００４６】
一部の実施形態では、周辺機器インターフェース１１８、ＣＰＵ（単数又は複数）１２０、及びメモリコントローラ１２２は、任意選択的に、チップ１０４などの単一チップ上に実装される。一部の他の実施形態では、これらは、個別のチップ上に、任意選択的に実装される。
【００４７】
ＲＦ（ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）（無線周波数）回路１０８は、電磁信号とも呼ばれるＲＦ信号を送受信する。ＲＦ回路１０８は、電気信号を電磁信号に、又は電磁信号を電気信号に変換し、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信する。ＲＦ回路１０８は、アンテナシステム、ＲＦ送受信機、１つ以上の増幅器、同調器、１つ以上の発振器、デジタル信号プロセッサ、ＣＯＤＥＣチップセット、加入者識別モジュール（ＳＩＭ）カード、メモリなどを含むがこれらに限定されない、これらの機能を実行するための周知の回路を、任意選択的に含む。ＲＦ回路１０８は、ワールドワイドウェブ（ＷＷＷ）とも呼ばれるインターネット、イントラネット、及び／又は、セルラー電話ネットワーク、無線ローカルエリアネットワーク（ＬＡＮ）などの無線ネットワーク、及び／又は、メトロポリタンエリアネットワーク（ＭＡＮ）、などのネットワーク、及び他のデバイス、と無線通信によって、任意選択的に通信する。無線通信は、複数の通信規格、通信プロトコル、及び通信技術のうちのいずれかを、任意選択的に使用し、それらの通信規格、通信プロトコル、及び通信技術としては、移動通信用のグローバルシステム（Global System for Mobile Communications、ＧＳＭ）、拡張データＧＳＭ環境（Enhanced Data GSM Environment、ＥＤＧＥ）、高速ダウンリンクパケット接続（high-speed downlink packet access、ＨＳＤＰＡ）、高速アップリンクパケット接続（high-speed uplink packet access、ＨＳＵＰＡ）、Ｅｖｏｌｕｔｉｏｎ，Ｄａｔａ−Ｏｎｌｙ（ＥＶ−ＤＯ）、ＨＳＰＡ、ＨＳＰＡ＋、２重セルＨＳＰＡ（Dual-Cell HSPA、ＤＣ−ＨＳＰＤＡ）、ロングタームエボリューション（long term evolution、ＬＴＥ）、近距離無線通信（near field communication、ＮＦＣ）、広帯域符号分割多元接続（wideband code division multiple access、Ｗ−ＣＤＭＡ）、符号分割多元接続（code division multiple access、ＣＤＭＡ）、時分割多元接続（time division multiple access、ＴＤＭＡ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ（Ｗｉ−Ｆｉ）（登録商標）（例えば、ＩＥＥＥ  ８０２．１１ａ、ＩＥＥＥ  ８０２．１１ａｃ、ＩＥＥＥ  ８０２．１１ａｘ、ＩＥＥＥ  ８０２．１１ｂ、ＩＥＥＥ  ８０２．１１ｇ、及び／又はＩＥＥＥ  ８０２．１１ｎ）、ボイスオーバーインターネットプロトコル（voice over Internet Protocol、ＶｏＩＰ）、Ｗｉ−ＭＡＸ、電子メール用のプロトコル（例えば、インターネットメッセージアクセスプロトコル（Internet message access protocol、ＩＭＡＰ）及び／若しくはポストオフィスプロトコル（post office protocol、ＰＯＰ））、インスタントメッセージング（例えば、拡張可能メッセージング及びプレゼンスプロトコル（extensible messaging and presence protocol、ＸＭＰＰ）、インスタントメッセージング及びプレゼンス利用拡張向けセッション開始プロトコル（Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions、ＳＩＭＰＬＥ）、インスタントメッセージング及びプレゼンスサービス（Instant Messaging and Presence Service、ＩＭＰＳ））、並びに／又はショートメッセージサービス（Short Message Service、ＳＭＳ）、あるいは本文書の出願日現在までにまだ開発されていない通信プロトコルを含めた任意の他の好適な通信プロトコ���が挙げられるが、これらに限定されない。
【００４８】
オーディオ回路１１０、スピーカ１１１、及びマイクロフォン１１３は、ユーザとデバイス１００との間のオーディオインターフェースを提供する。オーディオ回路１１０は、周辺機器インターフェース１１８からオーディオデータを受信し、このオーディオデータを電気信号に変換し、この電気信号をスピーカ１１１に送信する。スピーカ１１１は、電気信号を人間の可聴音波に変換する。オーディオ回路１１０は、マイクロフォン１１３により音波から変換された電気信号もまた受信する。オーディオ回路１１０は、電気信号をオーディオデータに変換し、このオーディオデータを処理のために周辺機器インターフェース１１８に送信する。オーディオデータは、周辺機器インターフェース１１８によって任意選択的に、メモリ１０２及び／若しくはＲＦ回路１０８から取得され、並びに／又はメモリ１０２及び／若しくはＲＦ回路１０８へ送信される。一部の実施形態では、オーディオ回路１１０は、更にヘッドセットジャック（例えば、２１２、図２）も含む。ヘッドセットジャックは、オーディオ回路１１０と、出力専用ヘッドホン又は出力（例えば、片耳又は両耳用のヘッドホン）及び入力（例えば、マイクロフォン）の双方を備えるヘッドセットなどの、取り外し可能なオーディオ入出力周辺機器と、の間のインターフェースを提供する。
【００４９】
Ｉ／Ｏサブシステム１０６は、タッチ感知ディスプレイシステム１１２及びその他の入力又は制御デバイス１１６などのデバイス１００上の入出力周辺機器を、周辺機器インターフェース１１８に結合する。Ｉ／Ｏサブシステム１０６は、任意選択的に、ディスプレイコントローラ１５６、光センサコントローラ１５８、強度センサコントローラ１５９、触覚フィードバックコントローラ１６１、及びその他の入力又は制御デバイスのための１つ以上の入力コントローラ１６０を含む。１つ以上の入力コントローラ１６０は、その他の入力又は制御デバイス１１６から電気信号を受信し、それらへ電気信号を送信する。その他の入力又は制御デバイス１１６は、任意選択的に、物理ボタン（例えば、プッシュボタン、ロッカボタンなど）、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイールなどを含む。一部の代替的実施形態では、入力コントローラ（単数又は複数）１６０は、キーボード、赤外線ポート、ＵＳＢポート、スタイラス、及び／又はマウスなどのポインタデバイスのうちのいずれかに、任意選択的に結合される（又は、いずれにも結合されない）。１つ以上のボタン（例えば、２０８、図２）は、スピーカ１１１及び／又はマイクロフォン１１３の音量調節のためのアップ／ダウンボタンを、任意選択的に含む。１つ以上のボタンは、プッシュボタン（例えば、２０６、図２）を、任意選択的に含む。
【００５０】
タッチ感知ディスプレイシステム１１２は、デバイスとユーザとの間の入力インターフェース及び出力インターフェースを提供する。ディスプレイコントローラ１５６は、タッチ感知ディスプレイシステム１１２から電気信号を受信し、及び／又はそれへ電気信号を送信する。タッチ感知ディスプレイシステム１１２は、ユーザに視覚出力を表示する。視覚出力は、グラフィック、テキスト、アイコン、ビデオ、及びこれらの任意の組合せ（総称して「グラフィック」と称する）を、任意選択的に含む。一部の実施形態では、視覚出力の一部又はすべては、ユーザインターフェースオブジェクトに対応する。
【００５１】
タッチ感知ディスプレイシステム１１２は、触覚／触知の接触に基づくユーザからの入力を受け付けるタッチ感知面、センサ、又はセンサのセットを有する。タッチ感知ディスプレイシステム１１２及びディスプレイコントローラ１５６（メモリ１０２内の任意の関連モジュール及び／又は命令セットと共に）は、タッチ感知ディスプレイシステム１１２上で接触（及び接触の任意の移動又は中断）を検出し、検出された接触をタッチ感知ディスプレイシステム１１２上に表示されるユーザインターフェースオブジェクト（例えば、１つ以上のソフトキー、アイコン、ウェブページ、又は画像）との双方向作用に変換する。一部の実施形態では、タッチ感知ディスプレイシステム１１２とユーザとの間の接触点は、ユーザの指又はスタイラスに対応する。
【００５２】
タッチ感知ディスプレイシステム１１２は、任意選択的に、ＬＣＤ（liquid crystal displaｙ）（液晶ディスプレイ）技術、ＬＰＤ（light emitting polymer display）（発光ポリマーディスプレイ）技術、又はＬＥＤ（light emitting diode）（発光ダイオード）技術を使用するが、他の実施形態では、他のディスプレイ技術が使用される。タッチ感知ディスプレイシステム１１２及びディスプレイコントローラ１５６は、静電容量技術、抵抗性技術、赤外線技術、及び表面音響波技術、並びに、タッチ感知ディスプレイシステム１１２との１つ以上の接触点を判定するための他の近接センサアレイ又は他の要素を含むが、これらに限定されない、現在既知の若しくは後日に開発される複数のタッチ感知技術のうちのいずれかを使用して、接触及びその任意の移動又は中断を、任意選択的に検出する。一部の実施形態では、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）などにおいて見られるような、投影型相互キャパシタンス検知技術が使用されている。
【００５３】
タッチ感知ディスプレイシステム１１２は、任意選択的に、１００ｄｐｉを超えるビデオ解像度を有する。一部の実施形態では、タッチスクリーンのビデオ解像度は、４００ｄｐｉを超える（例えば、５００ｄｐｉ、８００ｄｐｉ、又はより高い）。ユーザは、スタイラス、指などの任意の好適な物体又は付属物を使用して、タッチ感知ディスプレイシステム１１２と、任意選択的に接触する。一部の実施形態では、ユーザインターフェースは、指に基づく接触及びジェスチャで機能するように設計されるが、これらは、指の方がタッチスクリーン上での接触面積が広いため、スタイラスに基づく入力よりも精度が低い場合がある。一部の実施形態では、デバイスは、指に基づく粗い入力を精確なポインタ／カーソル位置又はユーザの望むアクションを実行するためのコマンドに変換する。
【００５４】
一部の実施形態では、タッチスクリーンに加えて、デバイス１００は、特定の機能をアクティブ化又は非アクティブ化させるためのタッチパッド（図示せず）を任意選択的に含む。一部の実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しない、デバイスのタッチ感知領域である。タッチパッドは、任意選択的に、タッチ感知ディスプレイシステム１１２とは別個のタッチ感知面、又はタッチスクリーンによって形成されたタッチ感知面の延長である。
【００５５】
デバイス１００はまた、様々な構成要素に電力を供給するための電力システム１６２をも含む。電力システム１６２は、任意選択的に、電力管理システム、１つ以上の電源（例えば、バッテリ、交流（ＡＣ））、再充電システム、停電検出回路、電力コンバータ又はインバータ、電力状態インジケータ（例えば、発光ダイオード（ＬＥＤ））、並びにポータブルデバイス内での電力の生成、管理、及び分配に関連付けられた任意の他の構成要素を含む。
【００５６】
デバイス１００はまた、１つ以上の光センサ１６４も任意選択的に含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の光センサコントローラ１５８に結合された光センサを示す。光センサ（単数又は複数）１６４は、電荷結合デバイス（charge-coupled device、ＣＣＤ）又は相補的金属酸化物半導体（complementary metal-oxide semiconductor、ＣＭＯＳ）フォトトランジスタを、任意選択的に含む。光センサ（単数又は複数）１６４は、１つ以上のレンズを通して投影された、環境からの光を受光し、その光を、画像を表すデータに変換する。撮像モジュール１４３（カメラモジュールとも称する）と連動して、光センサ（単数又は複数）１６４は、静止画像及び／又はビデオを、任意選択的にキャプチャする。一部の実施形態では、タッチスクリーンを静止画像及び／又はビデオ画像取得のためのビューファインダとして使用できるように、光センサは、デバイスの前面のタッチ感知ディスプレイシステム１１２の反対側である、デバイス１００の背面に配置される。一部の実施形態では、（例えば、自撮りのため、ユーザがタッチスクリーン上で他のビデオ会議参加者を見ている間に、ビデオ会議のためなど）ユーザの画像を得るように、別の光センサがデバイスの前面に配置される。
【００５７】
デバイス１００はまた、１つ以上の接触強度センサ１６５も任意選択的に含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の強度センサコントローラ１５９に結合された接触強度センサを示す。接触強度センサ（単数又は複数）１６５は、１つ以上のピエゾ抵抗ひずみゲージ、電気容量式力センサ、電気力センサ、圧電力センサ、光学力センサ、容量式タッチ感知面、又は他の強度センサ（例えば、タッチ感知面上の接触の力（若しくは圧力）を測定するために使用するセンサ）を、任意選択的に含む。接触強度センサ（単数又は複数）１６５は、環境から接触強度情報（例えば、圧力情報又は圧力情報のプロキシ）を受信する。一部の実施形態では、少なくとも１つの接触強度センサが、タッチ感知面（例えば、タッチ感知ディスプレイシステム１１２）に並置されているか、又は、それに近接している。一部の実施形態では、少なくとも１つの接触強度センサが、デバイス１００の前面に配置されたタッチスクリーンディスプレイシステム１１２の反対側である、デバイス１００の背面に配置されている。
【００５８】
デバイス１００は、１つ以上の近接センサ１６６をも任意選択的に含む。図１Ａは、周辺機器インターフェース１１８に結合された近接センサ１６６を示す。あるいは、近接センサ１６６は、Ｉ／Ｏサブシステム１０６内の入力コントローラ１６０に結合される。一部の実施形態では、多機能デバイスがユーザの耳の近くに配置されている場合（例えば、ユーザが電話通話を行っている場合）、近接センサが、タッチ感知ディスプレイシステム１１２をオフにして無効にする。
【００５９】
デバイス１００はまた、１つ以上の触知出力生成器１６３も任意選択的に含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の触覚フィードバックコントローラ１６１に結合された触知出力生成器を示す。触知出力生成器（単数又は複数）１６３は、スピーカ若しくは他のオーディオ構成要素などの１つ以上の電気音響デバイス、及び／又はモータ、ソレノイド、電気活性ポリマー、圧電アクチュエータ、静電アクチュエータ、若しくは他の触知出力生成構成要素（例えば、デバイス上で電気信号を触知出力に変換する構成要素）などの、エネルギーを直線運動に変換する電気機械デバイスを、任意選択的に含む。一部の実施形態では、触知出力生成器（単数又は複数）１６３は、触覚フィードバックモジュール１３３から触知フィードバック生成命令を受信し、デバイス１００のユーザが感知できる触知出力をデバイス１００上で生成する。一部の実施形態では、少なくとも１つの触知出力生成器は、タッチ感知面（例えば、タッチ感知ディスプレイシステム１１２）に並置されているか、又はそれに近接しており、任意選択的に、タッチ感知面を垂直方向（例えば、デバイス１００の表面の内／外）に、又は横方向（例えば、デバイス１００の表面と同じ平面内の前後）に動かすことによって、触知出力を生成する。一部の実施形態では、少なくとも１つの触知出力生成器センサは、デバイス１００の前面に配置されたタッチ感知ディスプレイシステム１１２の反対側である、デバイス１００の背面に配置されている。
【００６０】
デバイス１００はまた、デバイスの位置（例えば、姿勢）に関する情報を得るための、１つ以上の加速度計１６７、ジャイロスコープ１６８、及び／又は磁気計１６９（例えば、慣性測定ユニット（inertial measurement unit、ＩＭＵ）の一部として）を、任意選択的に含む。図１Ａは、周辺機器インターフェース１１８に結合された、センサ１６７、１６８、及び１６９を示す。あるいは、センサ１６７、１６８、及び１６９は、Ｉ／Ｏサブシステム１０６内の入力コントローラ１６０に、任意選択的に結合される。一部の実施形態では、情報は、１つ以上の加速度計から受信したデータの分析に基づいて、ポートレートビュー又はランドスケープビューでタッチスクリーンディスプレイ上に表示される。デバイス１００は、デバイス１００の場所に関する情報を得るためのＧＰＳ（若しくはＧＬＯＮＡＳＳ又は他の全地球的航法システム）受信機（図示せず）を任意選択的に含む。
【００６１】
一部の実施形態では、メモリ１０２に記憶されたソフトウェア構成要素は、オペレーティングシステム１２６、通信モジュール（又は命令セット）１２８、接触／動きモジュール（又は命令セット）１３０、位置モジュール（又は命令セット）１３１、グラフィックモジュール（又は命令セット）１３２、触覚フィードバックモジュール（又は命令セット）１３３、テキスト入力モジュール（又は命令セット）１３４、全地球測位システム（Global Positioning System、ＧＰＳ）モジュール（又は命令セット）１３５、及びアプリケーション（又は命令セット）１３６を含む。更に、一部の実施形態では、図１Ａ及び図３に示すように、メモリ１０２は、デバイス／グローバル内部状態１５７を記憶する。デバイス／グローバル内部状態１５７は、以下の１つ以上を含む。現在アクティブであるアプリケーションがある場合、どのアプリケーションがアクティブであるかを示す、アクティブアプリケーション状態、どのアプリケーション、ビュー、又は他の情報がタッチ感知ディスプレイシステム１１２の様々な領域を占有しているかを示す、表示状態、デバイスの様々なセンサ及びその他の入力又は制御デバイス１１６から得られる情報を含む、センサ状態、並びに、デバイスの場所及び／若しくは姿勢に関する場所及び／若しくは姿勢情報。
【００６２】
オペレーティングシステム１２６（例えば、ｉＯＳ、Ｄａｒｗｉｎ（登録商標）、ＲＴＸＣ（登録商標）、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＳ  Ｘ（登録商標）、ＷＩＮＤＯＷＳ（登録商標）、又はＶｘＷｏｒｋｓ（登録商標）などの組み込みオペレーティングシステム）は、一般的なシステムタスク（例えば、メモリ管理、記憶デバイス制御、電力管理など）を制御及び管理するための様々なソフトウェア構成要素及び／又はドライバを含み、様々なハードウェア構成要素とソフトウェア構成要素との間の通信を容易にする。
【００６３】
通信モジュール１２８は、１つ以上の外部ポート１２４を介して他のデバイスとの通信を容易にし、ＲＦ回路１０８及び／又は外部ポート１２４が受信したデータを処理するための様々なソフトウェア構成要素をも含む。外部ポート１２４（例えば、ユニバーサルシリアルバス（Universal Serial Bus、ＵＳＢ）、ＦＩＲＥＷＩＲＥ（登録商標）など）は、直接的に、又はネットワーク（例えば、インターネット、無線ＬＡＮなど）を通して間接的に、他のデバイスに結合するように適応している。一部の実施形態では、外部ポートは、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスの一部内で使用される３０ピンコネクタと同一の、又はこれに類似した及び／若しくは互換性のあるマルチピン（例えば、３０ピン）コネクタである。一部の実施形態では、外部ポートは、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスの一部内で使用されるＬｉｇｈｔｎｉｎｇ（登録商標）コネクタと同一の、又はこれに類似した及び／若しくは互換性のあるＬｉｇｈｔｎｉｎｇコネクタである。
【００６４】
接触／動きモジュール１３０は、任意選択的に、（ディスプレイコントローラ１５６と連動して）タッチ感知ディスプレイシステム１１２との接触、及び他のタッチ感知デバイス（例えば、タッチパッド又は物理クリックホイール）との接触を検出する。接触／動きモジュール１３０は、接触が発生したかどうかの判定（例えば、フィンガダウンイベントの検出）、接触の強度（例えば、接触の力若しくは圧力、又は、接触の力若しくは圧力の代用物）の判定、タッチ感知面にわたる接触の移動及びその移動の追跡（例えば、１つ以上のフィンガドラッグイベントの検出）があるかどうかの判定、並びに接触が中止されたかどうか（例えば、フィンガアップイベント又は接触の中断の検出）の判定などの、（例えば、指又はスタイラスによる）接触の検出に関係する様々な動作を実行するための、ソフトウェア構成要素を含む。接触／動きモジュール１３０は、タッチ感知面から接触データを受信する。一連の接触データにより表される接触点の移動を判定することは、接触点の速さ（大きさ）、速度（大きさ及び方向）、並びに／又は加速度（大きさ及び／又は方向の変化）を判定することを、任意選択的に含む。これらの動作は、任意選択的に、単一の接触（例えば、１つの指の接触若しくはスタイラスの接触）、又は複数の同時接触（例えば、「マルチタッチ」／複数の指の接触及び／若しくはスタイラスの接触）に適用される。一部の実施形態では、接触／動きモジュール１３０及びディスプレイコントローラ１５６は、タッチパッド上の接触を検出する。
【００６５】
接触／動きモジュール１３０は任意選択的に、ユーザによるジェスチャ入力を検出する。タッチ感知面上の異なるジェスチャは、異なる接触パターン（例えば、検出される接触の異なる動き、タイミング、及び／又は強度）を有する。従って、ジェスチャは、特定の接触パターンを検出することによって、任意選択的に検出される。例えば、フィンガタップジェスチャを検出することは、フィンガダウンイベントを検出し、続いて（例えば、アイコンの位置での）そのフィンガダウンイベントと同じ位置（又は、実質的に同じ位置）でフィンガアップ（リフトオフ）イベントを検出することを含む。別の実施例として、タッチ感知面上のフィンガスワイプジェスチャの検出は、フィンガダウンイベントを検出し、続いて１つ以上のフィンガドラッグイベントを検出し、その後、フィンガアップ（リフトオフ）イベントを検出することを含む。同様に、タップ、スワイプ、ドラッグ、及び他のジェスチャは、スタイラスに対して、スタイラスに対する特定の接触パターンを検出することにより、任意選択的に検出される。
【００６６】
加速度計１６７、ジャイロスコープ１６８、及び／又は磁気計１６９と連動して、位置モジュール１３１は、特定の座標系内のデバイスの姿勢（ロール、ピッチ、及び／又はヨー）などの、デバイスに関する姿勢情報を任意選択的に検出する。位置モジュール１３０は、デバイスの位置の検出及びデバイスの位置の変化の検出に関係する、様々な動作を実行するためのソフトウェア構成要素を含む。一部の実施形態では、位置モジュール１３１は、デバイスに対するスタイラスの姿勢状態の検出及びスタイラスの姿勢状態の変化の検出などの、スタイラスに関する姿勢情報を検出するために、デバイスと共に使用されているスタイラスから受信した情報を使用する。
【００６７】
グラフィックモジュール１３２は、表示されるグラフィックの視覚的効果（例えば、輝度、透明度、彩度、コントラスト、又は他の視覚特性）を変更するための構成要素を含めた、タッチ感知ディスプレイシステム１１２又は他のディスプレイ上にグラフィックをレンダリングして表示するための、様々な既知のソフトウェア構成要素を含む。本明細書で使用するとき、用語「グラフィック」は、ユーザに対して表示できる任意のオブジェクトを含み、それらのオブジェクトとしては、テキスト、ウェブページ、アイコン（ソフトキーを含むユーザインターフェースオブジェクトなど）、デジタル画像、ビデオ、アニメーションなどが挙げられるが、これらに限定されない。
【００６８】
一部の実施形態では、グラフィックモジュール１３２は、使用されるグラフィックを表すデータを記憶する。各グラフィックには、対応するコードが、任意選択的に割り当てられる。グラフィックモジュール１３２は、アプリケーションなどから、必要に応じて、座標データ及び他のグラフィック特性データと共に、表示されることとなるグラフィックを指定する１つ以上のコードを受信し、次にディスプレイコントローラ１５６に出力する画面の画像データを生成する。
【００６９】
触覚フィードバックモジュール１３３は、デバイス１００とのユーザ対話に応じて、触知出力生成器（単数又は複数）１６３を使用してデバイス１００上の１つ以上の場所で触知出力を生み出すために、命令（例えば、触覚フィードバックコントローラ１６１によって使用される命令）を生成するための、様々なソフトウェア構成要素を含む。
【００７０】
テキスト入力モジュール１３４は任意選択的に、グラフィックモジュール１３２の構成要素であり、様々なアプリケーション（例えば、連絡先１３７、電子メール１４０、ＩＭ１４１、ブラウザ１４７、及びテキスト入力を必要とする任意の他のアプリケーション）においてテキストを入力するための、ソフトキーボードを提供する。
【００７１】
ＧＰＳモジュール１３５は、デバイスの場所を判断し、この情報を様々なアプリケーションで使用するために、（例えば、場所に基づくダイヤル発呼で使用するために電話１３８に、ピクチャ／ビデオのメタデータとしてカメラ１４３に、並びに、気象ウィジェット、地元のイエローページウィジェット、及び地図／ナビゲーションウィジェットなどの、場所に基づいたサービスを提供するアプリケーションに）提供する。
【００７２】
アプリケーション１３６は任意選択的に、以下のモジュール（又は命令セット）、又はそれらのサブセット若しくはスーパーセットを含む。
●連絡先モジュール１３７（アドレス帳若しくは連絡先リストと呼ばれる場合もある）、
●電話モジュール１３８、
●ビデオ会議モジュール１３９、
●電子メールクライアントモジュール１４０、
●インスタントメッセージング（ＩＭ）モジュール１４１、
●トレーニングサポートモジュール１４２、
●静止画像及び／又はビデオ画像用のカメラモジュール１４３、
●画像管理モジュール１４４、
●ブラウザモジュール１４７、
●カレンダーモジュール１４８、
●天気ウィジェット１４９−１、株式ウィジェット１４９−２、計算機ウィジェット１４９−３、アラーム時計ウィジェット１４９−４、辞書ウィジェット１４９−５、及びユーザが取得した他のウィジェット、並びにユーザ作成ウィジェット１４９−６のうちの１つ以上を任意選択的に含むウィジェットモジュール１４９、
●ユーザ作成ウィジェット１４９−６を作成するためのウィジェット作成モジュール１５０、
●検索モジュール１５１、
●任意選択的にビデオプレーヤモジュール及び音楽プレーヤモジュールから構成される、ビデオ及び音楽プレーヤモジュール１５２、
●メモモジュール１５３、
●地図モジュール１５４、並びに／又は
●オンラインビデオモジュール１５５。
【００７３】
任意選択的にメモリ１０２内に記憶される他のアプリケーション１３６の例としては、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、ＪＡＶＡ（登録商標）対応アプリケーション、暗号化、デジタル著作権管理、音声認識、及び音声複製が挙げられる。
【００７４】
タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、連絡先モジュール１３７は、（例えば、メモリ１０２又はメモリ３７０内の連絡先モジュール１３７のアプリケーション内部状態１９２に記憶される）アドレス帳又は連絡先リストを管理するための実行可能命令を含み、それには、アドレス帳に名前（単数又は複数）を加えること、アドレス帳から名前（単数若しくは複数）を削除すること、電話番号（単数若しくは複数）、電子メールアドレス（単数若しくは複数）、住所（単数若しくは複数）、又は他の情報を名前と関連付けること、画像を名前と関連付けること、名前を分類して並べ替えること、電話番号及び／又は電子メールアドレスを提供して、電話１３８、ビデオ会議１３９、電子メール１４０、又はＩＭ１４１による通信を開始する及び／又は容易にすること、などが含まれる。
【００７５】
ＲＦ回路１０８、オーディオ回路１１０、スピーカ１１１、マイクロフォン１１３、タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、電話モジュール１３８は、電話番号に対応する一連の文字を入力し、アドレス帳１３７内の１つ以上の電話番号にアクセスし、入力されている電話番号を修正し、それぞれの電話番号をダイヤルし、会話を実行し、会話が完了した際に接続を切るか又は電話を切るための、実行可能命令を含む。上述のように、無線通信は、複数の通信規格、プロトコル、及び技術のうちのいずれかを任意選択的に使用する。
【００７６】
ＲＦ回路１０８、オーディオ回路１１０、スピーカ１１１、マイクロフォン１１３、タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、光センサ（単数又は複数）１６４、光センサコントローラ１５８、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、連絡先リスト１３７、及び電話モジュール１３８と併せて、ビデオ会議モジュール１３９は、ユーザの指示に従って、ユーザと１人以上の他の参加者との間のビデオ会議を開始し、行い、終了するための実行可能命令を含む。
【００７７】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、電子メールクライアントモジュール１４０は、ユーザの指示に応じて電子メールを作成し、送信し、受信し、管理するための、実行可能命令を含む。画像管理モジュール１４４と連携して、電子メールクライアントモジュール１４０は、カメラモジュール１４３で撮影された静止画像又はビデオ画像を有する電子メールを作成及び送信することを非常に容易にする。
【００７８】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、インスタントメッセージモジュール１４１は、インスタントメッセージと対応する文字列を入力し、入力済みの文字を修正し、それぞれのインスタントメッセージを送信し（例えば、電話ベースのインスタントメッセージのためのショートメッセージサービス（ＳＭＳ）若しくはマルチメディアメッセージサービス（Multimedia Message Service、ＭＭＳ）プロトコルを使用して、又はインターネットベースのインスタントメッセージのためのＸＭＰＰ、ＳＩＭＰＬＥ、Ａｐｐｌｅ  Ｐｕｓｈ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ（ＡＰＮｓ）、若しくはＩＭＰＳを使用して）、インスタントメッセージを受信し、受信したインスタントメッセージを見るための、実行可能命令を含む。一部の実施形態では、送信及び／又は受信されたインスタントメッセージは、ＭＭＳ及び／又は拡張メッセージングサービス（Enhanced Messaging Service、ＥＭＳ）でサポートされるような、グラフィック、写真、オーディオファイル、ビデオファイル、及び／又は他の添付ファイルを、任意選択的に含む。本明細書で使用するとき、「インスタントメッセージ」は、電話ベースのメッセージ（例えば、ＳＭＳ又はＭＭＳを使用して送信されたメッセージ）及びインターネットベースのメッセージ（例えば、ＸＭＰＰ、ＳＩＭＰＬＥ、ＡＰＮｓ、又はＩＭＰＳを使用して送信されたメッセージ）の両方を指す。
【００７９】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、ＧＰＳモジュール１３５、地図モジュール１５４、及び音楽プレーヤモジュール１４６と併せて、トレーニングサポートモジュール１４２は、（例えば、時間、距離、及び／又はカロリー消費目標を有する）トレーニングを作成する、（スポーツデバイス及びスマートウォッチ内の）トレーニングセンサと通信する、トレーニングセンサデータを受信する、トレーニングをモニタするために使用されるセンサを較正する、トレーニングのための音楽を選択して再生する、並びに、トレーニングデータを表示し、記憶し、送信するための、実行可能命令を含んでいる。
【００８０】
タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、光センサ（単数又は複数）１６４、光センサコントローラ１５８、接触モジュール１３０、グラフィックモジュール１３２、及び画像管理モジュール１４４と併せて、カメラモジュール１４３は、静止画像又はビデオ（ビデオストリームを含む）をキャプチャしてメモリ１０２にそれらを記憶する、静止画像又はビデオの特性を修正する、及び／又はメモリ１０２から静止画像若しくはビデオを削除するための、実行可能命令を含む。
【００８１】
タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、及びカメラモジュール１４３と併せて、画像管理モジュール１４４は、静止画像及び／又はビデオ画像を配置し、修正し（例えば、編集し）、又はその他の方式で操作し、ラベルを付け、削除し、提示し（例えば、デジタルスライドショー又はアルバム内で）、並びに記憶するための、実行可能命令を含む。
【００８２】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、ブラウザモジュール１４７は、ウェブページ又はそれらの一部、並びにウェブページにリンクされた添付ファイル及び他のファイルの、検索、リンク付け、受信、及び表示を含め、ユーザの指示に従いインターネットをブラウズするための、実行可能命令を含む。
【００８３】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、電子メールクライアントモジュール１４０、及びブラウザモジュール１４７と併せて、カレンダーモジュール１４８は、ユーザの指示に従い、カレンダー及びカレンダーに関連付けられたデータ（例えば、カレンダー項目、すべきことのリストなど）を作成、表示、修正、及び記憶するための、実行可能命令を含む。
【００８４】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、及びブラウザモジュール１４７と併せて、ウィジェットモジュール１４９は、任意選択的に、ユーザによってダウンロードされ使用されるミニアプリケーション（例えば、気象ウィジェット１４９−１、株式ウィジェット１４９−２、計算機ウィジェット１４９−３、アラーム時計ウィジェット１４９−４、及び辞書ウィジェット１４９−５）、又はユーザによって作成されるミニアプリケーション（例えば、ユーザ作成ウィジェット１４９−６）である。一部の実施形態では、ウィジェットは、ＨＴＭＬ（Hypertext Markup Language）（ハイパーテキストマークアップ言語）ファイル、ＣＳＳ（Cascading Style Sheets）（カスケーディングスタイルシート）ファイル、及びＪａｖａＳｃｒｉｐｔ（登録商標）ファイルを含む。一部の実施形態では、ウィジェットは、ＸＭＬ（拡張可能マークアップ言語）ファイル及びＪａｖａＳｃｒｉｐｔファイル（例えば、Ｙａｈｏｏ！（登録商標）ウィジェット）を含む。
【００８５】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、及びブラウザモジュール１４７と併せて、ウィジェット作成モジュール１５０は、ウィジェットを作成する（例えば、ウェブページのユーザ指定部分をウィジェットに変える）ための実行可能命令を含む。
【００８６】
タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、検索モジュール１５１は、ユーザの指示に従い、１つ以上の検索基準（例えば、１つ以上のユーザ指定の検索語句）と一致する、メモリ１０２内のテキスト、音楽、サウンド、画像、ビデオ、及び／又は他のファイルを検索するための、実行可能命令を含む。
【００８７】
タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、オーディオ回路１１０、スピーカ１１１、ＲＦ回路１０８、及びブラウザモジュール１４７と併せて、ビデオ及び音楽プレーヤモジュール１５２は、ＭＰ３又はＡＡＣファイルなどの１つ以上のファイル形式で記憶された録音済みの音楽又は他のサウンドファイルをユーザがダウンロード及び再生できるようにするための実行可能命令、並びに、ビデオを（例えば、タッチ感知ディスプレイシステム１１２上又は無線で若しくは外部ポート１２４を介して接続された外部のディスプレイ上に）表示、提示、又はその他の方式で再生するための実行可能命令を含む。一部の実施形態では、デバイス１００は、任意選択的に、ｉＰｏｄ（Ａｐｐｌｅ  Ｉｎｃ．の商標）などのＭＰ３プレーヤの機能を備える。
【００８８】
タッチ感知ディスプレイシステム１１２、ディスプレイコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、及びテキスト入力モジュール１３４と併せて、メモモジュール１５３は、ユーザの指示に従って、メモ、すべきことのリストなどを作成及び管理するための、実行可能命令を含む。
【００８９】
ＲＦ回路１０８、タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、テキスト入力モジュール１３４、ＧＰＳモジュール１３５、及びブラウザモジュール１４７と併せて、地図モジュール１５４は、ユーザの指示に従って、地図、並びに地図に関連付けられたデータ（例えば、運転方向、特定の場所又はその付近の店舗及び関心対象の他の地点についてのデータ、並びに場所に基づく他のデータ）を受信し、表示し、修正し、記憶するための、実行可能命令を含む。
【００９０】
タッチ感知ディスプレイシステム１１２、ディスプレイシステムコントローラ１５６、接触モジュール１３０、グラフィックモジュール１３２、オーディオ回路１１０、スピーカ１１１、ＲＦ回路１０８、テキスト入力モジュール１３４、電子メールクライアントモジュール１４０、及びブラウザモジュール１４７と併せて、オンラインビデオモジュール１５５は、ユーザによる、Ｈ．２６４などの１つ以上のファイル形式のオンラインビデオへのアクセス、これらのブラウズ、受信（例えば、ストリーミング及び／又はダウンロードにより）、再生（例えば、タッチスクリーン１１２上で又は無線で若しくは外部ポート１２４を介して接続された外部のディスプレイ上で）、特定のオンラインビデオへのリンクを含む電子メールの送信、その他の方式での管理を可能にする、実行可能命令を含む。一部の実施形態では、特定のオンラインビデオへのリンクを送信するために、電子メールクライアントモジュール１４０ではなく、インスタントメッセージングモジュール１４１が使用される。
【００９１】
上記で特定されたモジュール及びアプリケーションのそれぞれは、１つ以上の上記した機能を実行するための実行可能命令セット、並びに本出願に記載の方法（例えば、本明細書に記載の、コンピュータにより実行される方法及び他の情報処理方法）に対応する。これらのモジュール（すなわち、命令セット）は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実施形態において、任意選択的に、組み合わされるか、又はその他の方式で再配置される。一部の実施形態では、メモリ１０２は、上記で特定されたモジュール及びデータ構造のサブセットを、任意選択的に記憶する。更に、メモリ１０２は、上記されていない追加のモジュール及びデータ構造を任意選択的に記憶する。
【００９２】
一部の実施形態では、デバイス１００は、デバイス上の機能の所定のセットの動作がタッチスクリーン及び／又はタッチパッドを介してのみ実行されるデバイスである。デバイス１００の動作のための主要入力制御デバイスとしてタッチスクリーン及び／又はタッチパッドを使用することにより、デバイス１００上の物理的な入力制御デバイス（プッシュボタン、ダイヤル、など）の数を、任意選択的に低減する。
【００９３】
タッチスクリーン及び／又はタッチパッドを介してのみ実行される、所定の機能のセットは、任意選択的に、ユーザインターフェース間のナビゲーションを含む。一部の実施形態では、タッチパッドは、ユーザによってタッチされると、デバイス１００上に表示される任意のユーザインターフェースから、メインメニュー、ホームメニュー、又はルートメニューへデバイス１００をナビゲートする。かかる実施形態では、「メニューボタン」はタッチパッドを使用して実装される。一部の他の実施形態では、メニューボタンは、タッチパッドの代わりに、物理プッシュボタン又は他の物理入力制御デバイスである。
【００９４】
図１Ｂは、一部の実施形態による、イベント処理のための例示的な構成要素を示すブロック図である。一部の実施形態では、メモリ１０２（図１Ａ内）又は３７０（図３）は、イベントソート部１７０（例えば、オペレーティングシステム１２６内）及び対応するアプリケーション１３６−１（例えば、上述のアプリケーション１３６、１３７〜１５５、３８０〜３９０のいずれか）を含む。
【００９５】
イベントソート部１７０は、イベント情報を受信し、イベント情報が配信されるアプリケーション１３６−１及びアプリケーション１３６−１のアプリケーションビュー１９１を判定する。イベントソート部１７０は、イベントモニタ１７１及びイベントディスパッチャモジュール１７４を含む。一部の実施形態では、アプリケーション１３６−１は、アプリケーションがアクティブ又は実行中のとき、タッチ感知ディスプレイシステム１１２上に表示される現在のアプリケーションビュー（単数又は複数）を示す、アプリケーション内部状態１９２を含む。一部の実施形態では、デバイス／グローバル内部状態１５７は、いずれのアプリケーション（単数又は複数）が現在アクティブであるかを判定するために、イベントソート部１７０によって使用され、アプリケーション内部状態１９２は、イベント情報が配信されるアプリケーションビュー１９１を判定するために、イベントソート部１７０によって使用される。
【００９６】
一部の実施形態では、アプリケーション内部状態１９２は、アプリケーション１３６−１が実行を再開する際に使用される再開情報、アプリケーション１３６−１によって表示されているか又は表示の準備が整っている情報を示すユーザインターフェース状態情報、ユーザがアプリケーション１３６−１の以前の状態又はビューに戻ることを可能にするための状態待ち行列、及びユーザが以前に行ったアクションのリドゥ／アンドゥ待ち行列、のうちの１つ以上などの追加情報を含む。
【００９７】
イベントモニタ１７１は、周辺機器インターフェース１１８からイベント情報を受信する。イベント情報は、サブイベント（例えば、マルチタッチジェスチャの一部としての、タッチ感知ディスプレイシステム１１２上でのユーザのタッチ）についての情報を含む。周辺機器インターフェース１１８は、Ｉ／Ｏサブシステム１０６、あるいは、近接センサ１６６、加速度計（単数若しくは複数）１６７、ジャイロスコープ（単数若しくは複数）１６８、磁気計（単数若しくは複数）１６９、及び／又は（オーディオ回路１１０を介して）マイクロフォン１１３などのセンサから受信する情報を送信する。周辺機器インターフェース１１８がＩ／Ｏサブシステム１０６から受信する情報は、タッチ感知ディスプレイシステム１１２又はタッチ感知面からの情報を含む。
【００９８】
一部の実施形態では、イベントモニタ１７１は、所定の間隔で周辺機器インターフェース１１８に要求を送信する。これに応じて、周辺機器インターフェース１１８はイベント情報を送信する。他の実施形態では、周辺機器インターフェース１１８は、重要なイベント（例えば、所定のノイズ閾値を上回り、かつ／又は所定の持続時間を超えた入力を受信すること）が存在する場合にのみ、イベント情報を送信する。
【００９９】
一部の実施形態では、イベントソート部１７０はまた、ヒットビュー判定モジュール１７２及び／又はアクティブイベントレコグナイザ（recognizer）判定モジュール１７３も含む。
【０１００】
ヒットビュー判定モジュール１７２は、タッチ感知ディスプレイシステム１１２が２つ以上のビューを表示した際に、１つ以上のビュー内のどこにおいてサブイベントが発生したかを判定するためのソフトウェア手続きを提供する。ビューは、制御部及びユーザがディスプレイ上で見ることが可能な他の要素で構成される。
【０１０１】
アプリケーションに関連付けられたユーザインターフェースの別の態様は、本明細書でアプリケーションビュー又はユーザインターフェースウィンドウと呼ばれる場合があるビューのセットであり、それらの中で情報が表示され、タッチに基づくジェスチャが発生する。タッチが検出される（それぞれのアプリケーションの）アプリケーションビューは、任意選択的に、アプリケーションのプログラム階層又はビュー階層内のプログラムレベルに対応する。例えば、タッチが検出される最下位レベルのビューは任意選択的に、ヒットビューと呼ばれ、また、適切な入力として認識されるイベントのセットは任意選択的に、タッチベースのジェスチャを開始する最初のタッチのヒットビューに少なくとも部分的に基づいて判定される。
【０１０２】
ヒットビュー判定モジュール１７２は、タッチベースのジェスチャのサブイベントに関係する情報を受信する。アプリケーションが、階層として編成された複数のビューを有する場合、ヒットビュー判定モジュール１７２は、そのサブイベントを処理すべき階層内の最下位のビューとしての、ヒットビューを特定する。ほとんどの状況では、ヒットビューは、起因となるサブイベント（すなわち、イベント又は潜在的なイベントを形成するサブイベントのシーケンスにおける最初のサブイベント）が発生する最下位レベルのビューである。ヒットビューがヒットビュー判定モジュールによって特定されると、ヒットビューは、典型的には、それがヒットビューとして特定される原因となった同じタッチ又は入力ソースに関係する、すべてのサブイベントを受信する。
【０１０３】
アクティブイベントレコグナイザ判定モジュール１７３は、ビュー階層内のどのビュー（単数又は複数）がサブイベントの特定のシーケンスを受信すべきかを判定する。一部の実施形態では、アクティブイベントレコグナイザ判定モジュール１７３は、ヒットビューのみがサブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、アクティブイベントレコグナイザ判定モジュール１７３は、サブイベントの物理的な場所を含むすべてのビューはアクティブに関わっているビューであると判定し、したがって、すべてのアクティブに関わっているビューは、サブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、タッチサブイベントがある特定のビューに関連付けられた領域に完全に限定されたとしても、階層の上位のビューは、依然としてアクティブに関わっているビューであり続ける。
【０１０４】
イベントディスパッチャモジュール１７４は、イベント情報をイベントレコグナイザ（例えば、イベントレコグナイザ１８０）に発送する。アクティブイベントレコグナイザ判定モジュール１７３を含む実施形態において、イベントディスパッチャモジュール１７４は、アクティブイベントレコグナイザ判定モジュール１７３により判定されたイベントレコグナイザにイベント情報を配信する。一部の実施形態では、イベントディスパッチャモジュール１７４は、それぞれのイベント受信部モジュール１８２により取得されるイベント情報をイベント待ち行列内に記憶する。
【０１０５】
一部の実施形態では、オペレーティングシステム１２６は、イベントソート部１７０を含む。あるいは、アプリケーション１３６−１はイベントソート部１７０を含む。更に他の実施形態では、イベントソート部１７０は、独立型のモジュール、又は接触／動きモジュール１３０などの、メモリ１０２に記憶された別のモジュールの一部である。
【０１０６】
一部の実施形態では、アプリケーション１３６−１は、それぞれがアプリケーションのユーザインターフェースのそれぞれのビュー内で発生するタッチイベントを処理する命令を含む、複数のイベント処理部１９０及び１つ以上のアプリケーションビュー１９１を含む。アプリケーション１３６−１の各アプリケーションビュー１９１は、１つ以上のイベントレコグナイザ１８０を含む。通常、それぞれのアプリケーションビュー１９１は、複数のイベントレコグナイザ１８０を含む。他の実施形態では、イベントレコグナイザ１８０のうちの１つ以上は、ユーザインターフェースキット（図示せず）、又はアプリケーション１３６−１が方法及び他の特性を継承する上位レベルのオブジェクトなどの、別個のモジュールの一部である。一部の実施形態では、イベント処理部１９０はそれぞれ、データ更新部１７６、オブジェクト更新部１７７、ＧＵＩ更新部１７８、及び／又はイベントソート部１７０から受信したイベントデータ１７９、のうちの１つ以上を含む。イベント処理部１９０は任意選択的に、アプリケーション内部状態１９２を更新するために、データ更新部１７６、オブジェクト更新部１７７、又はＧＵＩ更新部１７８を利用する若しくは呼び出す。あるいは、アプリケーションビュー１９１のうちの１つ以上は、１つ以上の対応するイベント処理部１９０を含む。また、一部の実施形態では、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８のうちの１つ以上は、対応するアプリケーションビュー１９１に含まれる。
【０１０７】
本明細書で使用するとき、力イベントは、タッチ入力の、（例えば、最低力強度閾値を満足する）開始、強度の変化（例えば、タッチ入力の強度の増加若しくは減少）、又は強度状態の変化（例えば、強度閾値を超える強い押圧若しくは強度が強度閾値未満に降下するようなタッチ入力の解放）などの、タッチ入力の状態又は状態の変化を示すための、デバイスが生成した信号又はデバイスが生成したデータ（例えば、デバイス１００が生成又は更新した信号又はデータオブジェクト）を指す。力イベントは、タッチ感知面上の物理的タッチ（例えば、指及び／又はスタイラスを用いたタッチ）と関連付けられているが、力イベントは、本明細書において記載するとき、物理的タッチとは異なっている。
【０１０８】
イベントレコグナイザ１８０はそれぞれ、イベントソート部１７０からイベント情報（例えば、イベントデータ１７９）を受信し、そのイベント情報からイベントを特定する。イベントレコグナイザ１８０は、イベント受信部１８２及びイベント比較部１８４を含む。一部の実施形態では、イベントレコグナイザ１８０はまた、メタデータ１８３及び（サブイベント配信命令を任意選択的に含む）イベント配信命令１８８の、少なくともサブセットも含む。
【０１０９】
イベント受信部１８２は、イベントソート部１７０からイベント情報を受信する。このイベント情報は、サブイベントについての情報、例えば、タッチ又はタッチの移動についての情報を含む。サブイベントによっては、イベント情報はまた、サブイベントの場所などの追加情報も含む。サブイベントが、タッチの動きに関わるとき、イベント情報は任意選択的に、サブイベントの速さ及び方向も含む。一部の実施形態では、イベントは、１つの向きから別の向きへの（例えば、縦向きから横向きへの、又はその逆の）デバイスの回転を含み、そのイベント情報は、デバイスの現在の向き（デバイスの姿勢とも呼ばれる）についての対応する情報を含む。
【０１１０】
イベント比較部１８４は、イベント情報を所定のイベント又はサブイベントの定義と比較し、その比較に基づいて、イベント又はサブイベントを判定する、あるいはイベント又はサブイベントの状態を判定又は更新する。一部の実施形態では、イベント比較部１８４は、イベント定義１８６を含む。イベント定義１８６は、例えば、イベント１（１８７−１）、イベント２（１８７−２）などの、イベントの定義（例えば、サブイベントの所定のシーケンス）を含む。一部の実施形態では、イベント１８７内のサブイベントは、例えば、タッチ開始、タッチ終了、タッチの移動、タッチの中止、及び複数のタッチを含む。ある実施例では、イベント１（１８７−１）の定義は、表示されたオブジェクト上のダブルタップである。ダブルタップは、例えば、表示されたオブジェクト上の所定の段階についての第１のタッチ（タッチ開始）、所定の段階についての第１のリフトオフ（タッチ終了）、表示されたオブジェクト上の所定の段階についての第２のタッチ（タッチ開始）、及び所定の段階についての第２のリフトオフ（タッチ終了）を含む。別の実施例では、イベント２（１８７−２）の定義は、表示されたオブジェクト上のドラッグである。ドラッグは、例えば、表示されたオブジェクト上の所定の段階についてのタッチ（又は接触）、タッチ感知ディスプレイシステム１１２にわたるタッチの移動、及びタッチのリフトオフ（タッチ終了）を含む。一部の実施形態では、イベントはまた、１つ以上の関連イベント処理部１９０に関する情報も含む。
【０１１１】
一部の実施形態では、イベント定義１８７は、それぞれのユーザインターフェースオブジェクトに関するイベントの定義を含む。一部の実施形態では、イベント比較部１８４は、どのユーザインターフェースオブジェクトがサブイベントに関連付けられているかを判定するためのヒットテストを実行する。例えば、３つのユーザインターフェースオブジェクトがタッチ感知ディスプレイシステム１１２上に表示されるアプリケーションビューにおいて、タッチ感知ディスプレイシステム１１２上でタッチが検出されると、イベント比較部１８４は、３つのユーザインターフェースオブジェクトのうちのどれがタッチ（サブイベント）に関連付けられているかを判定するためのヒットテストを実行する。表示された各オブジェクトが、対応するイベント処理部１９０と関連付けられている場合、イベント比較部は、ヒットテストの結果を使用して、どのイベント処理部１９０をアクティブ化すべきかを判定する。例えば、イベント比較部１８４は、サブイベント及びヒットテストのトリガとなるオブジェクトに関連付けられたイベント処理部を選択する。
【０１１２】
一部の実施形態では、それぞれのイベント１８７の定義はまた、サブイベントのシーケンスがイベントレコグナイザのイベントタイプに対応するか否かが判定されるまで、イベント情報の配信を遅延させる、遅延作用も含む。
【０１１３】
それぞれのイベントレコグナイザ１８０が一連のサブイベントがイベント定義１８６中のイベントのいずれとも一致しないと判定した場合、それぞれのイベントレコグナイザ１８０は、イベント不可能、イベント失敗、又はイベント終了の状態に入り、その後は、タッチに基づくジェスチャの後続のサブイベントを無視する。この状況では、ヒットビューに関してアクティブのまま維持される他のイベントレコグナイザがあれば、そのイベントレコグナイザは、進行中のタッチに基づくジェスチャのサブイベントを、引き続き追跡及び処理する。
【０１１４】
一部の実施形態では、それぞれのイベントレコグナイザ１８０は、構成変更可能なプロパティと、フラグと、及び／又はイベント配信システムがどのようにサブイベント配信を実行すべきかをアクティブに関わっているイベントレコグナイザに示すリストと、を有するメタデータ１８３を含む。一部の実施形態では、メタデータ１８３は、構成変更可能なプロパティと、フラグと、及び／又はイベントレコグナイザが互いにどのように対話するか若しくは対話し得るかについて示すリストと、を含む。一部の実施形態では、メタデータ１８３は、構成変更可能なプロパティと、フラグと、及び／又はサブイベントがビュー階層又はプログラム階層内の様々なレベルに配信されるか否かを示すリストと、を含む。
【０１１５】
一部の実施形態では、それぞれのイベントレコグナイザ１８０は、イベントの１つ以上の特定のサブイベントが認識されたときに、イベントに関連付けられたイベント処理部１９０をアクティブ化する。一部の実施形態では、それぞれのイベントレコグナイザ１８０は、イベントに関連付けられたイベント情報をイベント処理部１９０に配信する。イベント処理部１９０をアクティブ化することは、対応するヒットビューにサブイベントを送信する（及び送信を延期する）こととは異なっている。一部の実施形態では、イベントレコグナイザ１８０は、認識されたイベントに関連付けられたフラグをスローし、フラグに関連付けられたイベント処理部１９０は、フラグをキャッチし、所定の処理を実行する。
【０１１６】
一部の実施形態では、イベント配信命令１８８は、イベント処理部をアクティブ化することなくサブイベントについてのイベント情報を配信するサブイベント配信命令を含む。その代わりに、サブイベント配信命令は、一連のサブイベントと関連付けられたイベント処理部に、又はアクティブに関わっているビューに、イベント情報を配信する。一連のサブイベントに又はアクティブに関わっているビューに関連付けられたイベント処理部は、イベント情報を受信し、所定の処理を実行する。
【０１１７】
一部の実施形態では、データ更新部１７６は、アプリケーション１３６−１で使用されるデータを作成及び更新する。例えば、データ更新部１７６は、連絡先モジュール１３７で使用される電話番号を更新、又はビデオプレーヤモジュール１４５で使用されるビデオファイルを記憶する。一部の実施形態では、オブジェクト更新部１７７は、アプリケーション１３６−１で使用されるオブジェクトを作成及び更新する。例えば、オブジェクト更新部１７７は、新たなユーザインターフェースオブジェクトを作成、又はユーザインターフェースオブジェクトの位置を更新する。ＧＵＩ更新部１７８は、ＧＵＩを更新する。例えば、ＧＵＩ更新部１７８は、表示情報を準備し、タッチ感知ディスプレイ上に表示するため、表示情報をグラフィックモジュール１３２に送信する。
【０１１８】
一部の実施形態では、イベント処理部（単数又は複数）１９０は、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８を含むか、又はそれらにアクセスすることができる。一部の実施形態では、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８は、それぞれのアプリケーション１３６−１又はアプリケーションビュー１９１の単一モジュールに含まれる。他の実施形態では、それらは、２つ以上のソフトウェアモジュールに含まれる。
【０１１９】
タッチ感知ディスプレイ上のユーザのタッチのイベント処理に関する前述の説明はまた、入力デバイスを用いて多機能デバイス１００を動作させるための他の形態のユーザ入力にも適用されるが、そのすべてがタッチスクリーン上で開始されるわけではないことを理解されたい。例えば、単一若しくは複数のキーボードの押圧若しくは保持に任意選択的に合わせたマウスの移動及びマウスボタンの押圧、タッチパッド上でのタップ、ドラッグ、スクロールなどの接触移動、ペンスタイラス入力、デバイスの移動、口頭による指示、検出された眼球運動、バイオメトリック入力、並びに／又はこれらの任意の組合せが、認識対象のイベントを定義するサブイベントに対応する入力として、任意選択的に利用される。
【０１２０】
図１Ｃは、一部の実施形態による、イベントオブジェクト１９４の移行を示すブロック図である。
【０１２１】
図１Ａに関して上記したように、接触／動きモジュール１３０は、タッチ入力の状態及び／又は状態の変化を判定する。一部の実施形態では、デバイスは、タッチ入力の判定された状態及び／又は判定された状態の変化を１つ以上のソフトウェア構成要素に伝えるための、（例えば、データオブジェクトの形態の）信号又はデータを生成する。一部の実施形態では、データオブジェクトは、イベントオブジェクト（例えば、イベントオブジェクト１９４）と呼ばれる。イベントオブジェクトは、対応するタッチ入力の状態を表すデータを含む。一部の実施形態では、イベントオブジェクト１９４はマウスイベントオブジェクトである（その理由は、タッチ入力はマウスによる入力と等価であるからである）。例えば、かかる実施形態では、タッチ感知面にわたって移動するタッチ入力は、マウスの移動（例えば、マウス移動イベント）に対応する。一部の他の実施形態では、イベントオブジェクト１９４は、マウスイベントオブジェクトとは異なるタッチイベントオブジェクトである。一部の実施形態では、タッチイベントオブジェクトは、対応するタッチ入力のタッチに特有の特性を表すデータを含む（例えば、いくつかの同時のタッチ、指又はスタイラスの接触の向き、など）。一部の他の実施形態では、イベントオブジェクト１９４は、マウスイベントオブジェクト（又はタッチイベントオブジェクト）とは異なる力イベントオブジェクトである。一部の実施形態では、力イベントオブジェクトは、対応するタッチ入力の力イベントに固有の特性を表すデータを含む（例えば、タッチ入力により加えられる強度、タッチ入力の段／段階、など）。一部の実施形態では、イベントオブジェクトは、かかる特性の任意の組合せ（例えば、マウスイベントに特有の特性、タッチイベントに特有の特性、及び力イベントに特有の特性）を含む。
【０１２２】
一部の実施形態では、接触／動きモジュール１３０は、イベントオブジェクトを生成（又は更新）し、イベントオブジェクトを１つ以上のアプリケーション（例えば、図１Ａの電子メールクライアントモジュール１４０などのアプリケーション１３６−１、及び／又は、ブラウザモジュール１４７などのアプリケーション１３６−２）に送信する。あるいは、接触／情報モジュール１３０は、接触に関する情報（例えば、未加工の接触の座標）を、１つ以上のアプリケーション（例えば、アプリケーション１（１３６−１）及び／又はアプリケーション２（１３６−２））に送信し、この情報を受信するアプリケーションは、１つ以上のイベントオブジェクトを生成（又は更新）する。一部の実施形態では、アプリケーションは、１つ以上のイベントオブジェクトを生成（又は更新）し、この１つ以上のイベントオブジェクトを、タッチ処理モジュール２２０以外のアプリケーションの部分に送信する、タッチ処理モジュール２２０を含む。一部の実施形態では、タッチ処理モジュール２２０は、アプリケーション非依存である（例えば、同じタッチ処理モジュールが、電子メールクライアントアプリケーション、ブラウザアプリケーションなどの複数の個別のアプリケーションの各々に含まれる）。本明細書で使用するとき、タッチ処理モジュール２２０がアプリケーション非依存であることは、タッチ処理モジュール２２０が特定のソフトウェアアプリケーション用に特定的に設計されていないことを意味する。タッチ処理モジュール２２０がアプリケーション非依存であることは、タッチ処理モジュール２２０がその関連アプリケーションとは別個に配置されるということを意味しない。タッチ処理モジュール２２０は、一部の実施形態では、その関連アプリケーションとは異なる別個のものであるが、図１Ｃに示すように、一部の実施形態では、タッチ処理モジュール２２０はその関連アプリケーションに含まれる。一部の実施形態では、アプリケーションはまた、そのアプリケーションに特有のアプリケーションコアも含む。
【０１２３】
図１Ｃでは、アプリケーション１（１３６−１、例えば電子メールクライアントアプリケーション）及びアプリケーション２（１３６−２、例えばブラウザアプリケーション）の各々は、タッチ処理モジュール２２０を含む。更には、アプリケーション１（１３６−１）は、アプリケーション１（１３６−１）に特有のアプリケーションコア１（２３０−１）を含み、かつ／又はアプリケーション２（１３６−２）は、アプリケーション２（１３６−２）に特有のアプリケーションコア２（２３０−２）を含む。例えば、アプリケーションコア１（２３０−１）は、アプリケーション１（１３６−１）に特有の動作（例えば、１つ以上の電子メールサーバから電子メールを取得すること）を実行する命令を含み、アプリケーションコア２（２３０−２）は、アプリケーション２（１３６−２）に特有の動作（例えば、ウェブページをブックマークすること）を実行する命令を含む。
【０１２４】
一部の実施形態では、イベントオブジェクト１９４は、宛先（例えば、アプリケーションコア１（２３０−１）などのソフトウェア構成要素）に直接送信される。任意選択的に、イベントオブジェクト１９４は、アプリケーションプログラミングインターフェース２２２を介して送信される。一部の実施形態では、イベントオブジェクト１９４は、イベントオブジェクト１９４を（例えば、待ち行列２１８−１内に）ポストしてアプリケーションコア１（２３０−１）によって取得されるようにすることによって、送信される。
【０１２５】
一部の実施形態では、イベントオブジェクト１９４は力情報を含む。一部の実施形態では、マウスイベントオブジェクトは、力情報（例えば、未加工の又は正規化された、タッチ入力により加えられる力）を含む。一部の実施形態では、タッチイベントオブジェクトは力情報を含む。一部の実施形態では、力イベントオブジェクトは力情報を含む。
【０１２６】
図２は、一部の実施形態による、タッチスクリーン（例えば、タッチ感知ディスプレイシステム１１２、図１Ａ）を備えるポータブル多機能デバイス１００を示す。タッチスクリーンは、ユーザインターフェース（ＵＩ）２００内に１つ以上のグラフィックを、任意選択的に表示する。これらの実施形態、並びに後述する実施形態において、ユーザは、例えば、１本以上の指２０２（図には、正確な縮尺率では描かれていない）又は１つ以上のスタイラス２０３（図には、正確な縮尺率では描かれていない）を用いて、グラフィック上でジェスチャを行うことにより、グラフィックのうちの１つ以上を選択することができる。一部の実施形態では、ユーザが１つ以上のグラフィックとの接触を断った際に、その１つ以上のグラフィックの選択が発生する。一部の実施形態では、ジェスチャは、１回以上のタップ、１回以上のスワイプ（左から右へ、右から左へ、上方向へ及び／若しくは下方向へ）、並びに／又は、デバイス１００と接触した指のローリング（右から左へ、左から右へ、上方向へ及び／若しくは下方向へ）を、任意選択的に含む。一部の実装又は状況では、グラフィックとの不測の接触によって、そのグラフィックが選択されることはない。例えば、任意選択的には、選択に対応するジェスチャがタップである場合、アプリケーションアイコンの上をスイープするスワイプジェスチャによって、対応するアプリケーションが選択されることはない。
【０１２７】
デバイス１００はまた任意選択的に、「ホーム」又はメニューボタン２０４などの、１つ以上の物理ボタンも含む。前述のように、メニューボタン２０４は任意選択的に、デバイス１００上で任意選択的に実行される、アプリケーションのセット内の任意のアプリケーション１３６へのナビゲーションに使用される。あるいは、一部の実施形態では、メニューボタンは、タッチスクリーンディスプレイ上に表示されたＧＵＩにおけるソフトキーとして実装されている。
【０１２８】
一部の実施形態では、デバイス１００は、タッチスクリーンディスプレイと、メニューボタン２０４と、デバイスへの電源供給のオン／オフ及びデバイスのロックのためのプッシュボタン２０６と、音量調節ボタン（単数又は複数）２０８と、加入者識別モジュール（ＳＩＭ）カードスロット２１０と、ヘッドセットジャック２１２と、ドッキング／充電用外部ポート１２４と、を含む。プッシュボタン２０６は任意選択的に、ボタンを押し下げ、所定の時間間隔の間ボタンを押し下げた状態で保持することによってデバイス上の電源をオン／オフする、ボタンを押し下げ所定の時間間隔が経過する前にボタンを解放することによってデバイスをロックする、及び／又は、デバイスのロックを解除する若しくはロック解除処理を開始するために、使用される。一部の実施形態では、デバイス１００はまた、マイクロフォン１１３を通して、一部の機能をアクティブ化又は非アクティブ化するための口頭入力を受け付ける。デバイス１００はまた、タッチ感知ディスプレイシステム１１２上の接触の強度を検出するための１つ以上の接触強度センサ１６５、及び／又は、デバイス１００のユーザに対する触知出力を生成するための１つ以上の触知出力生成器１６３も、任意選択的に含む。
【０１２９】
図３は、一部の実施形態による、ディスプレイ及びタッチ感知面を備える例示的な多機能デバイスのブロック図である。デバイス３００は、ポータブル型である必要はない。一部の実施形態では、デバイス３００は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディアプレーヤデバイス、ナビゲーションデバイス、教育的デバイス（子供の学習玩具など）、ゲームシステム、又は制御デバイス（例えば、家庭用又は業務用コントローラ）である。デバイス３００は、典型的には、１つ以上の処理ユニット（ＣＰＵ）３１０と、１つ以上のネットワーク又は他の通信インターフェース３６０と、メモリ３７０と、これらの構成要素を相互接続するための１つ以上の通信バス３２０と、を含む。通信バス３２０は、システム構成要素間の通信を相互接続及び制御する回路（チップセットと呼ばれる場合もある）を任意選択的に含む。デバイス３００は、典型的にはタッチスクリーンディスプレイであるディスプレイ３４０を備える、入出力（Ｉ／Ｏ）インターフェース３３０を含む。Ｉ／Ｏインターフェース３３０はまた、キーボード及び／又はマウス（又は他のポインティングデバイス）３５０並びにタッチパッド３５５、デバイス３００上に触知出力を生成するための（例えば、図１Ａを参照して上記した触知出力生成器（単数又は複数）１６３と同様の）触知出力生成器３５７、センサ３５９（例えば、図１Ａを参照して上記したセンサ１１２、１６４、１６５、１６６、１６７、１６８、及び１６９と同様の、タッチ感知センサ、光センサ、接触強度センサ、近接センサ、加速度センサ、姿勢センサ、及び／又は磁気センサ接触強度センサ）も、任意選択的に含む。メモリ３７０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセスソリッドステートメモリデバイスなどの、高速ランダムアクセスメモリを含み、また任意選択的に、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ３７０は、ＣＰＵ（単数又は複数）３１０からリモートに配置された１つ以上の記憶デバイスを任意選択的に含む。一部の実施形態では、メモリ３７０は、ポータブル多機能デバイス１００（図１Ａ）のメモリ１０２に記憶されたプログラム、モジュール、及びデータ構造に類似のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する。更に、メモリ３７０は、ポータブル多機能デバイス１００のメモリ１０２に存在しない追加のプログラム、モジュール、及びデータ構造を、任意選択的に記憶する。例えば、デバイス３００のメモリ３７０は任意選択的に、描画モジュール３８０、プレゼンテーションモジュール３８２、ワードプロセッシングモジュール３８４、ウェブサイト作成モジュール３８６、ディスクオーサリングモジュール３８８、及び／又はスプレッドシートモジュール３９０を記憶するが、ポータブル多機能デバイス１００（図１Ａ）のメモリ１０２は任意選択的に、これらのモジュールを記憶しない。
【０１３０】
上記で特定された図３の要素のそれぞれは任意選択的に、前述のメモリデバイスのうちの１つ以上に記憶される。上記で特定されたモジュールのうちのそれぞれは、上述した機能を実行する命令セットに対応する。上記で特定されたモジュール又はプログラム（すなわち、命令セット）は、別個のソフトウェアプログラム、手順、又はモジュールとして実施される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実施形態において、任意選択的に、組み合わされるか、又はその他の方式で再配置される。一部の実施形態では、メモリ３７０は、上記で特定されたモジュール及びデータ構造のサブセットを、任意選択的に記憶する。更に、メモリ３７０は、上記されていない追加のモジュール及びデータ構造を任意選択的に記憶する。
【０１３１】
図４は、一部の実施形態による、例示的な電子スタイラス２０３のブロック図である。電子スタイラス２０３は、単にスタイラスと呼ばれる場合もある。スタイラス２０３は、メモリ４０２（任意選択的に、１つ以上のコンピュータ可読記憶媒体を含む）、メモリコントローラ４２２、１つ以上の処理ユニット（ＣＰＵ）４２０、周辺機器インターフェース４１８、ＲＦ回路４０８、入出力（Ｉ／Ｏ）サブシステム４０６、及びその他の入力又は制御デバイス４１６を含む。スタイラス２０３は、外部ポート４２４及び１つ以上の光センサ４６４を任意選択的に含む。スタイラス２０３は任意選択的に、デバイス１００上の（例えば、スタイラス２０３がデバイス１００のタッチ感知ディスプレイシステム１１２などのタッチ感知面と共に使用されるとき）、又は他の表面（例えば机の表面）上の接触の強度を検出するための、１つ以上の強度センサ４６５を含む。スタイラス２０３は任意選択的に、スタイラス２０３上に触知出力を生成するための、１つ以上の触知出力生成器４６３を含む。これらの構成要素は、１つ以上の通信バス又は信号ライン４０３を介して任意選択的に通信する。
【０１３２】
一部の実施形態では、上で検討した用語「触知出力」は、ユーザの触覚でユーザによって検出されることになる、デバイス（例えば、デバイス１００）のアクセサリ（例えば、スタイラス２０３）の、そのアクセサリの従前の位置に対する物理的変位、アクセサリの構成要素の、そのアクセサリの別の構成要素に対する物理的変位、又はアクセサリの重心に対する構成要素の変位を指す。例えば、アクセサリ又はアクセサリの構成素が、タッチに敏感なユーザの表面（例えば、ユーザの手の指、手のひら、又は他の部分）に接触している状況において、物理的変位によって生成された触知出力は、アクセサリ又はアクセサリの構成要素の物理的特性の認識された変化に相当する触感として、ユーザによって解釈される。例えば、構成要素（例えば、スタイラス２０３の筐体）の移動は、ユーザによって、物理アクチュエータボタンの「クリック」として任意選択的に解釈される。場合によっては、ユーザの動作により物理的に押された（例えば、変位された）スタイラスに関連付けられた物理アクチュエータボタンの移動がない時でさえ、ユーザは「クリック」などの触感を感じるであろう。そのようなユーザによるタッチの解釈は、ユーザの個人的な感覚認知に左右されるものではあるが、大多数のユーザに共通する、多くのタッチの感覚認知が存在する。したがって、触知出力が、ユーザの特定の感覚認知（例えば、「クリック」）に対応するものと記述される場合、別途記載のない限り、生成された触知出力は、典型的な（又は平均的な）ユーザの記述された感覚認知を生成するデバイス、又はデバイスの構成要素の物理的変位に対応する。
【０１３３】
スタイラス２０３は、電子スタイラスの一実施例に過ぎず、スタイラス２０３は、示されているものよりも多くの構成要素又は少ない構成要素を任意選択的に有し、２つ以上の構成要素を任意選択的に組み合わせるか、又は、それらの構成要素の異なる構成若しくは配置を任意選択的に有することを理解されたい。図４に示す様々な構成要素は、１つ以上の信号処理回路及び／又は特定用途向け集積回路を含む、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せで実装される。
【０１３４】
メモリ４０２は、任意選択的に高速ランダムアクセスメモリを含み、また任意選択的に、１つ以上のフラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの、不揮発性メモリも含む。ＣＰＵ（単数又は複数）４２０及び周辺機器インターフェース４１８などの、スタイラス２０３の他の構成要素によるメモリ４０２へのアクセスは、メモリコントローラ４２２により任意選択的に制御される。
【０１３５】
周辺機器インターフェース４１８を使用して、このスタイラスの入力及び出力周辺機器を、ＣＰＵ（単数又は複数）４２０及びメモリ４０２に結合することができる。１つ以上のプロセッサ４２０は、スタイラス２０３のための様々な機能を実行するため及びデータを処理するために、メモリ４０２に記憶された様々なソフトウェアプログラム及び／又は命令セットを動作させる、又は実行する。
【０１３６】
一部の実施形態では、周辺機器インターフェース４１８、ＣＰＵ（単数又は複数）４２０、及びメモリコントローラ４２２は、任意選択的に、チップ４０４などの単一チップ上に実装される。一部の他の実施形態では、これらは、個別のチップ上に、任意選択的に実装される。
【０１３７】
ＲＦ（無線周波数）回路４０８は、電磁信号とも呼ばれるＲＦ信号を送受信する。ＲＦ回路４０８は、電気信号を電磁信号に、又は電磁信号を電気信号に変換し、電磁信号を介して、デバイス１００若しくは３００、通信ネットワーク、及び／又は他の通信デバイスと通信する。ＲＦ回路４０８は、アンテナシステム、ＲＦ送受信機、１つ以上の増幅器、同調器、１つ以上の発振器、デジタル信号プロセッサ、ＣＯＤＥＣチップセット、加入者識別モジュール（ＳＩＭ）カード、メモリなどを含むがこれらに限定されない、これらの機能を実行するための周知の回路を、任意選択的に含む。ＲＦ回路４０８は、ワールドワイドウェブ（ＷＷＷ）とも呼ばれるインターネット、イントラネット、及び／又は、セルラー電話ネットワーク、無線ローカルエリアネットワーク（ＬＡＮ）などの無線ネットワーク、及び／又は、メトロポリタンエリアネットワーク（ＭＡＮ）、などのネットワーク、及び他のデバイス、と無線通信によって、任意選択的に通信する。無線通信は、複数の通信規格、通信プロトコル、及び通信技術のうちのいずれかを、任意選択的に使用し、それらの通信規格、通信プロトコル、及び通信技術としては、移動通信用のグローバルシステム（ＧＳＭ）、拡張データＧＳＭ環境（ＥＤＧＥ）、高速ダウンリンクパケット接続（ＨＳＤＰＡ）、高速アップリンクパケット接続（ＨＳＵＰＡ）、Ｅｖｏｌｕｔｉｏｎ，Ｄａｔａ−Ｏｎｌｙ（ＥＶ−ＤＯ）、ＨＳＰＡ、ＨＳＰＡ＋、２重セルＨＳＰＡ（ＤＣ−ＨＳＰＤＡ）、ロングタームエボリューション（ＬＴＥ）、近距離無線通信（ＮＦＣ）、広帯域符号分割多元接続（Ｗ−ＣＤＭＡ）、符号分割多元接続（ＣＤＭＡ）、時分割多元接続（ＴＤＭＡ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ（Ｗｉ−Ｆｉ）（登録商標）（例えば、ＩＥＥＥ  ８０２．１１ａ、ＩＥＥＥ  ８０２．１１ａｃ、ＩＥＥＥ  ８０２．１１ａｘ、ＩＥＥＥ  ８０２．１１ｂ、ＩＥＥＥ  ８０２．１１ｇ、及び／又はＩＥＥＥ  ８０２．１１ｎ）、ボイスオーバーインターネットプロトコル（ＶｏＩＰ）、Ｗｉ−ＭＡＸ、電子メール用のプロトコル（例えば、インターネットメッセージアクセスプロトコル（ＩＭＡＰ）及び／若しくはポストオフィスプロトコル（ＰＯＰ））、インスタントメッセージング（例えば、拡張可能メッセージング及びプレゼンスプロトコル（ＸＭＰＰ）、インスタントメッセージング及びプレゼンス利用拡張向けセッション開始プロトコル（ＳＩＭＰＬＥ）、インスタントメッセージング及びプレゼンスサービス（ＩＭＰＳ））、並びに／又はショートメッセージサービス（ＳＭＳ）、あるいは本文書の出願日現在までにまだ開発されていない通信プロトコルを含めた任意の他の好適な通信プロトコルが挙げられるが、これらに限定されない。
【０１３８】
Ｉ／Ｏサブシステム４０６は、その他の入力又は制御デバイス４１６などのスタイラス２０３上の入出力周辺機器を、周辺機器インターフェース４１８に結合する。Ｉ／Ｏサブシステム４０６は、任意選択的に、光センサコントローラ４５８、強度センサコントローラ４５９、触覚フィードバックコントローラ４６１、及びその他の入力又は制御デバイスのための１つ以上の入力コントローラ４６０を含む。１つ以上の入力コントローラ４６０は、その他の入力又は制御デバイス４１６から電気信号を受信し、それらへ電気信号を送信する。その他の入力又は制御デバイス４１６は、任意選択的に、物理ボタン（例えば、プッシュボタン、ロッカボタンなど）、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイールなどを含む。一部の代替的実施形態では、入力コントローラ（単数又は複数）４６０は、赤外線ポート及び／又はＵＳＢポートのうちのいずれかに、任意選択的に結合される（又は、いずれにも結合されない）。
【０１３９】
スタイラス２０３はまた、様々な構成要素に電力を供給するための電力システム４６２をも含む。電力システム４６２は任意選択的に、電力管理システム、１つ以上の電源（例えば、バッテリ、交流（ＡＣ））、再充電システム、停電検出回路、電力コンバータ又はインバータ、電力状態インジケータ（例えば、発光ダイオード（ＬＥＤ））、並びにポータブルデバイス及び／又はポータブルアクセサリにおける電力の生成、管理、及び分配に関連付けられた任意の他の構成要素を含む。
【０１４０】
スタイラス２０３はまた、１つ以上の光センサ４６４も任意選択的に含む。図４は、Ｉ／Ｏサブシステム４０６内の光センサコントローラ４５８に結合された、光センサを示す。光センサ（単数又は複数）４６４は、電荷結合デバイス（ＣＣＤ）又は相補的金属酸化物半導体（ＣＭＯＳ）フォトトランジスタを、任意選択的に含む。光センサ（単数又は複数）４６４は、１つ以上のレンズを通して投影された、環境からの光を受光し、その光を、画像を表すデータに変換する。
【０１４１】
スタイラス２０３はまた、１つ以上の接触強度センサ４６５も任意選択的に含む。図４は、Ｉ／Ｏサブシステム４０６内の強度センサコントローラ４５９に結合された、接触強度センサを示す。接触強度センサ（単数又は複数）４６５は、１つ以上のピエゾ抵抗ひずみゲージ、電気容量式力センサ、電気力センサ、圧電力センサ、光学力センサ、容量式タッチ感知面、又は他の強度センサ（例えば、表面上の接触の力（若しくは圧力）を測定するために使用するセンサ）を、任意選択的に含む。接触強度センサ（単数又は複数）４６５は、環境から接触強度情報（例えば、圧力情報又は圧力情報のプロキシ）を受信する。一部の実施形態では、少なくとも１つの接触強度センサが、スタイラス２０３の先端に並置されているか、又は、それに近接している。
【０１４２】
スタイラス２０３はまた、１つ以上の近接センサ４６６も任意選択的に含む。図４は、周辺機器インターフェース４１８に結合された、近接センサ４６６を示す。あるいは、近接センサ４６６は、Ｉ／Ｏサブシステム４０６内の入力コントローラ４６０に結合される。一部の実施形態では、近接センサは、スタイラス２０３の、電子デバイス（例えば、デバイス１００）への近接度を判定する。
【０１４３】
スタイラス２０３はまた、１つ以上の触知出力生成器４６３も任意選択的に含む。図４は、Ｉ／Ｏサブシステム４０６内の触覚フィードバックコントローラ４６１に結合された触知出力生成器を示す。触知出力生成器（単数又は複数）４６３は、スピーカ若しくは他のオーディオ構成要素などの１つ以上の電気音響デバイス、及び／又はモータ、ソレノイド、電気活性ポリマー、圧電アクチュエータ、静電アクチュエータ、若しくは他の触知出力生成構成要素（例えば、デバイス上で電気信号を触知出力に変換する構成要素）などの、エネルギーを直線運動に変換する電気機械デバイスを、任意選択的に含む。触知出力生成器（単数又は複数）４６３は、触覚フィードバックモジュール４３３から触知フィードバック生成命令を受信し、スタイラス２０３のユーザが感知できる触知出力をスタイラス２０３上で生成する。一部の実施形態では、少なくとも１つの触知出力生成器は、スタイラス２０３の長さ（例えば、本体又は筐体）と並置されているか、又はそれに近接しており、任意選択的に、スタイラス２０３を垂直方向（例えば、スタイラス２０３の長さと平行な方向）に、又は横方向（例えば、スタイラス２０３の長さの法線方向）に動かすことによって、触知出力を生成する。
【０１４４】
スタイラス２０３はまた、スタイラス２０３の場所及び姿勢状態に関する情報を得るための、１つ以上の加速度計４６７、ジャイロスコープ４６８、及び／又は磁気計４７０（例えば、慣性測定ユニット（ＩＭＵ）の一部として）を、任意選択的に含む。図４は、周辺機器インターフェース４１８に結合された、センサ４６７、４６９、及び４７０を示す。あるいは、センサ４６７、４６９、及び４７０は、Ｉ／Ｏサブシステム４０６内の入力コントローラ４６０に、任意選択的に結合される。スタイラス２０３は、スタイラス２０３の場所に関する情報を得るためのＧＰＳ（若しくはＧＬＯＮＡＳＳ又は他の全地球的航法システム）受信機（図示せず）を任意選択的に含む。
【０１４５】
一部の実施形態では、メモリ４０２に記憶されたソフトウェア構成要素は、オペレーティングシステム４２６、通信モジュール（又は命令セット）４２８、接触／動きモジュール（又は命令セット）４３０、位置モジュール（又は命令セット）４３１、及び全地球測位システム（ＧＰＳ）モジュール（又は命令セット）４３５を含む。更に、一部の実施形態では、図４に示すように、メモリ４０２は、デバイス／グローバル内部状態４５７を記憶する。デバイス／グローバル内部状態４５７は、スタイラスの様々なセンサ及び他の入力又は制御デバイス４１６から得られた情報を含む、センサ状態、デバイス（例えば、デバイス１００）に対するスタイラスの姿勢（例えば、図５Ａ及び図５Ｂに示すような、位置、向き、傾斜、ロール、及び／又は距離）に関する情報を含む、姿勢状態、並びに、（例えば、ＧＰＳモジュール４３５によって判定される）スタイラスの場所に関する場所情報、のうちの１つ以上を含む。
【０１４６】
オペレーティングシステム４２６（例えば、ｉＯＳ、Ｄａｒｗｉｎ（登録商標）、ＲＴＸＣ（登録商標）、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＳ  Ｘ（登録商標）、ＷＩＮＤＯＷＳ（登録商標）、又はＶｘＷｏｒｋｓ（登録商標）などの組み込みオペレーティングシステム）は、一般的なシステムタスク（例えば、メモリ管理、電力管理など）を制御及び管理するための様々なソフトウェア構成要素及び／又はドライバを含み、様々なハードウェア構成要素とソフトウェア構成要素との間の通信を容易にする。
【０１４７】
通信モジュール４２８は任意選択で、１つ以上の外部ポート４２４を介して他のデバイスとの通信を容易にし、ＲＦ回路４０８及び／又は外部ポート４２４が受信したデータを処理するための様々なソフトウェア構成要素をも含む。外部ポート４２４（例えば、ユニバーサルシリアルバス（ＵＳＢ）、ＦＩＲＥＷＩＲＥ（登録商標）など）は、直接的に、又はネットワーク（例えば、インターネット、無線ＬＡＮなど）を通して間接的に、他のデバイスに結合するように適応している。一部の実施形態では、外部ポートは、カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｉｎｃ．製のｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスの一部内で使用されるＬｉｇｈｔｎｉｎｇ（登録商標）コネクタと同一の、又はこれに類似した及び／若しくは互換性のあるＬｉｇｈｔｎｉｎｇコネクタである。
【０１４８】
接触／動きモジュール４３０は任意選択的に、スタイラス２０３及びスタイラス２０３の他のタッチ感知デバイス（例えば、ボタン又はスタイラス２０３の他のタッチ感知構成要素）との接触を検出する。接触／動きモジュール４３０は、接触が発生したかどうかの判定（例えば、タッチダウンイベントの検出）、接触の強度（例えば、接触の力若しくは圧力、又は、接触の力若しくは圧力の代用物）の判定、（例えば、デバイス１００のタッチスクリーン１１２にわたる）接触の移動及びその移動の追跡があるかどうかの判定、並びに接触が中止されたかどうか（例えば、リフトオフイベント又は接触の中断の検出）の判定などの、接触の検出（例えば、デバイス１００のタッチスクリーン１１２などのタッチ感知ディスプレイに対する、又は机の表面などの別の表面に対する、スタイラスの先端の検出）に関係する様々な動作を実行するための、ソフトウェア構成要素を含む。一部の実施形態では、接触／動きモジュール４３０は、Ｉ／Ｏサブシステム４０６から接触データを受信する。一連の接触データにより表される接触点の移動を判定することは、接触点の速さ（大きさ）、速度（大きさ及び方向）、並びに／又は加速度（大きさ及び／又は方向の変化）を判定することを、任意選択的に含む。上述のように、一部の実施形態では、接触の検出に関係するこれらの動作の内の１つ以上は、（接触／動きモジュール４３０を使用するスタイラスに加えて、又はその代わりに）接触／動きモジュール１３０を使用するデバイスによって実行される。
【０１４９】
接触／動きモジュール４３０は任意選択的に、スタイラス２０３によるジェスチャ入力を検出する。スタイラス２０３による異なるジェスチャは、異なる接触パターン（例えば、検出される接触の異なる動き、タイミング、及び／又は強度）を有する。従って、ジェスチャは、特定の接触パターンを検出することによって、任意選択的に検出される。例えば、単一のタップジェスチャを検出することは、タッチダウンイベントを検出し、続いて（例えば、アイコンの位置での）そのタッチダウンイベントと同じ位置（又は、実質的に同じ位置）でリフトオフイベントを検出することを含む。別の実施例として、スワイプジェスチャの検出は、タッチダウンイベントを検出し、続いて１つ以上のスタイラスドラッグイベントを検出し、その後、リフトオフイベントを検出することを含む。上述のように、一部の実施形態では、ジェスチャ検出は、（接触／動きモジュール４３０を使用するスタイラスに加えて、又はその代わりに）接触／動きモジュール１３０を使用するデバイスによって実行される。
【０１５０】
加速度計４６７、ジャイロスコープ４６８、及び／又は磁気計４６９と連動して、位置モジュール４３１は、特定の座標系内のスタイラスの姿勢（ロール、ピッチ、及び／又はヨー）などの、スタイラスに関する姿勢情報を任意選択的に検出する。加速度計４６７、ジャイロスコープ４６８、及び／又は磁気計４６９と連動して、位置モジュール４３１は、スタイラスのフリック、タップ、及びロールなどのスタイラス移動ジェスチャを、任意選択的に検出する。位置モジュール４３１は、特定の座標系内のスタイラスの位置の検出及びスタイラスの位置の変化の検出に関係する、様々な動作を実行するためのソフトウェア構成要素を含む。一部の実施形態では、位置モジュール４３１は、デバイスに対するスタイラスの姿勢状態を検出し、またデバイスに対するスタイラスの姿勢状態の変化を検出する。上述のように、一部の実施形態では、デバイス１００又は３００は、（位置モジュール４３１を使用するスタイラスに加えて、又はその代わりに）位置モジュール１３１を使用して、デバイスに対するスタイラスの姿勢状態及びスタイラスの姿勢状態の変化を判定する。
【０１５１】
触覚フィードバックモジュール４３３は、スタイラス２０３とのユーザ対話に応じて、スタイラス２０３上の１つ以上の場所で触知出力を生み出すために、触知出力生成器（単数又は複数）４６３によって使用される命令を生成するための、様々なソフトウェア構成要素を含む。
【０１５２】
ＧＰＳモジュール４３５はスタイラスの場所を判定し、様々なアプリケーション（例えば、紛失したデバイス及び／又はアクセサリを見付けるためのアプリケーションなどの、場所に基づくサービスを提供するアプリケーション）において使用するために、この情報を提供する。
【０１５３】
上記で特定されたモジュール及びアプリケーションのそれぞれは、１つ以上の上記の機能を実行するための実行可能命令セット、並びに本出願に記載の方法（例えば、本明細書に記載の、コンピュータにより実行される方法及び他の情報処理方法）に対応する。これらのモジュール（すなわち、命令セット）は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実施形態において、任意選択的に、組み合わされるか、又はその他の方式で再配置される。一部の実施形態では、メモリ４０２は、上記で特定されたモジュール及びデータ構造のサブセットを、任意選択的に記憶する。更に、メモリ４０２は、上記されていない追加のモジュール及びデータ構造を任意選択的に記憶する。
【０１５４】
図５Ａ〜図５Ｂは、一部の実施形態による、タッチ感知面（例えば、デバイス１００のタッチスクリーン１１２）に対するスタイラス２０３の姿勢状態を示す。一部の実施形態では、スタイラス２０３の姿勢状態は、タッチ感知面上のスタイラスの先端の投影（若しくは他の代表的な部分）の位置（例えば、（ｘ，ｙ）位置５０４、図５Ａ）タッチ感知面に対するスタイラスの向き（例えば、向き５０６、図５Ａ）、タッチ感知面に対するスタイラスの傾き（例えば、傾き５１２、図５Ｂ）、及び／又は、タッチ感知面に対するスタイラスの距離（例えば、距離５１４、図５Ｂ）、に対応する（又はこれらを示す）。一部の実施形態では、スタイラス２０３の姿勢状態は、スタイラスのピッチ、ヨー、及び／又はロール（例えば、例えば、タッチ感知面（例えば、タッチスクリーン１１２）若しくは地面などの特定の座標系に対するスタイラスの姿勢）に対応する（又はこれらを示す）。一部の実施形態では、姿勢状態は、姿勢パラメータのセット（例えば、１つ以上の姿勢パラメータ）を含む。一部の実施形態では、姿勢状態は、電子デバイス（例えば、デバイス１００）に送信される、スタイラス２０３からの１つ以上の測定値に従って検出される。例えば、スタイラスは、スタイラスの傾き（例えば、傾き５１２、図５Ｂ）及び／又は向き（例えば、向き５０６、図５Ａ）を測定し、測定値をデバイス１００に送信する。一部の実施形態では、姿勢状態は、スタイラス２０３からの１つ以上の測定値に従って検出された姿勢状態の代わりに又はこれと組み合わせて、タッチ感知面（例えば、デバイス１００のタッチスクリーン１１２）によって感知される、スタイラス中の１つ以上の電極からの未加工の出力に従って検出される。例えば、タッチ感知面は、スタイラス中の１つ以上の電極から未加工の出力を受信し、この未加工の出力に基づいて（任意選択的に、スタイラスによって生成されたセンサ測定値に基づいてスタイラスによって提供された姿勢状態情報を併用して）、スタイラスの傾き及び／又は向きを計算する。
【０１５５】
図５Ａは、一部の実施形態による、タッチ感知面の真上の視点からの、タッチ感知面（例えば、デバイス１００のタッチスクリーン１１２）に対するスタイラス２０３を示す。図５Ａでは、ｚ軸５９４はページの外（すなわち、タッチスクリーン１１２の平面の法線方向）を指し、ｘ軸５９０はタッチスクリーン１１２の第１の縁部（例えば、長さ）と平行であり、ｙ軸５９２はタッチスクリーン１１２の第２の縁部（例えば、幅）と平行でありかつｙ軸５９２はｘ軸５９０に対して垂直である。
【０１５６】
図５Ａは、（ｘ，ｙ）位置５０４にあるスタイラス２０３の先端を示す。一部の実施形態では、スタイラス２０３の先端は、タッチ感知面（例えば、タッチスクリーン１１２）へのスタイラスの近接度を判定するように構成された、スタイラスの終端部である。一部の実施形態では、タッチ感知面上のスタイラスの先端の投影は、正投影である。言い換えれば、タッチ感知面上のスタイラスの先端の投影は、タッチ感知面の表面の法線であるスタイラス先端からタッチ感知面に至る線の、端部（例えば、タッチ感知面の法線方向の経路に直接沿ってスタイラスを移動させた場合に、スタイラスの先端がタッチ感知面に触れることになる場所である、（ｘ，ｙ）位置５０４）にある点である。一部の実施形態では、タッチスクリーン１１２の左下の角の（ｘ，ｙ）位置は、位置（０，０）（例えば、（０，０）位置５０２）であり、タッチスクリーン１１２上の他の（ｘ，ｙ）位置は、タッチスクリーン１１２の左下の角に対して決まる。あるいは、一部の実施形態では、（０，０）位置は、タッチスクリーン１１２の別の位置に（例えば、タッチスクリーン１１２の中心に）配置され、他の（ｘ，ｙ）位置は、タッチスクリーン１１２のこの（０，０）位置に対して決まる。
【０１５７】
更に、図５Ａは、スタイラス２０３を向き５０６で示している。一部の実施形態では、向き５０６は、タッチスクリーン１１２上へのスタイラス２０３の投影（例えば、スタイラス２０３の長さ又はタッチスクリーン１１２上へのスタイラス２０３の異なる２つの点の投影の間の線に対応する線の、正投影）の向きである。一部の実施形態では、向き５０６は、タッチスクリーン１１２と平行な平面内の少なくとも１つの軸に対して決まる。一部の実施形態では、向き５０６は、タッチスクリーン１１２と平行な平面内の単一の軸（例えば、図５Ａに示すような軸５０８であり、軸５０８から時計回りの回転角度は０度〜３６０度の範囲である）に対して決まる。あるいは、一部の実施形態では、向き５０６は、タッチスクリーン１１２と平行な平面内の１対の軸（例えば、図５Ａに示すようなｘ軸５９０及びｙ軸５９２、又はタッチスクリーン１１２上に表示されたアプリケーションに関連付けられた１対の軸）に対して決まる。
【０１５８】
一部の実施形態では、タッチ感知ディスプレイ（例えば、デバイス１００のタッチスクリーン１１２）上に、目印（例えば、目印５１６）が表示される。一部の実施形態では、目印５１６は、スタイラスがタッチ感知ディスプレイに触れる前に、スタイラスがどこでタッチ感知ディスプレイに触れる（又はこれにマーク付けする）ことになるかを示す。一部の実施形態では、目印５１６は、タッチ感知ディスプレイ上に描かれているマークの一部である。一部の実施形態では、目印５１６は、タッチ感知ディスプレイ上に描かれているマークとは別個であり、仮想的な「ペン先端」、又はタッチ感知ディスプレイ上のどこにマークが描かれることになるかを示す他の要素に対応する。
【０１５９】
一部の実施形態では、目印５１６は、スタイラス２０３の姿勢状態に従って表示される。例えば、一部の状況では、目印５１６は（図５Ａ及び図５Ｂに示すように）（ｘ，ｙ）位置５０４から変位され、また他の状況では、目印５１６は、（ｘ，ｙ）位置５０４から変位されない（例えば、目印５１６は、傾き５１２がゼロ度であるとき、（ｘ，ｙ）位置５０４に又はこの近くに表示される）。一部の実施形態では、目印５１６は、スタイラスの姿勢状態に従って、色、サイズ（若しくは半径若しくは面積）、不透明度、及び／又は他の特性を変えて表示される。一部の実施形態では、表示された目印は、画素を覆う「ガラス上に」目印を表示するのではなく、タッチ感知ディスプレイの「画素上にまで」目印が通るように、タッチ感知ディスプレイ上のガラス層の厚さに相当する。
【０１６０】
図５Ｂは、一部の実施形態による、タッチ感知面の側方の視点からの、タッチ感知面（例えば、デバイス１００のタッチスクリーン１１２）に対するスタイラス２０３を示す。図５Ｂでは、ｚ軸５９４はタッチスクリーン１１２の平面の法線方向を指し、ｘ軸５９０はタッチスクリーン１１２の第１の縁部（例えば、長さ）と平行であり、ｙ軸５９２はタッチスクリーン１１２の第２の縁部（例えば、幅）と平行でありかつｙ軸５９２はｘ軸５９０に対して垂直である。
【０１６１】
更に、図５Ｂは、スタイラス２０３を傾き５１２で示している。一部の実施形態では、傾き５１２は、タッチ感知面の表面の法線（例えば、法線５１０）（単にタッチ感知面の法線とも呼ばれる）に対する角度である。図５Ｂに示すように、スタイラスがタッチ感知面に対して垂直である／タッチ感知面の法線方向であるとき（例えば、スタイラス２０３が法線５１０と平行であるとき）、傾き５１２はゼロであり、この傾きは、スタイラスが傾けられてタッチ感知面と平行である状態に近付くにつれ、大きくなる。
【０１６２】
更に、図５Ｂは、タッチ感知面に対するスタイラス２０３の距離５１４を示している。一部の実施形態では、距離５１４は、タッチ感知面の法線方向における、スタイラス２０３の先端からタッチ感知面までの距離である。例えば、図５Ｂでは、距離５１４は、スタイラス２０３の先端から（ｘ，ｙ）位置５０４までの距離である。
【０１６３】
用語「ｘ軸」、「ｙ軸」、及び「ｚ軸」は、本明細書では、特定の図においてある方向を示すように使用されているが、これらの用語は絶対的な方向を指すものではないことが理解されるであろう。言い換えれば、「ｘ軸」はそれぞれの軸のいずれであってもよく、「ｙ軸」はｘ軸とは異なる特定の軸とすることができる。典型的には、ｘ軸はｙ軸に対して垂直である。同様に、「ｚ軸」は「ｘ軸」及び「ｙ軸」とは異なり、典型的には「ｘ軸」及び「ｙ軸」の両方に対して垂直である。
【０１６４】
更に、図５Ｂは、ロール５１８、スタイラス２０３の長さ（長軸）を中心とした回転を示している。
【０１６５】
ここで、ポータブル多機能デバイス１００上に任意選択的に実装される、ユーザインターフェース（「ＵＩ」）の実施形態に注意を向ける。
【０１６６】
図６Ａは、一部の実施形態による、ポータブル多機能デバイス１００上のアプリケーションのメニューに関する、例示的なユーザインターフェースを示す。同様のユーザインターフェースがデバイス３００上に、任意選択的に、実装される。一部の実施形態では、ユーザインターフェース６００は、以下の要素、又はそれらの部分集合若しくは上位集合を含む。
●セルラー信号及びＷｉ−Ｆｉ信号などの無線通信（単数又は複数）のための信号強度インジケータ（単数又は複数）６０２、
●時刻６０４、
●Ｂｌｕｅｔｏｏｔｈインジケータ、
●バッテリ状態インジケータ６０６、
●下記などの、頻繁に使用されるアプリケーション用のアイコンを備えるトレー６０８、
○不在着信又はボイスメールメッセージの数のインジケータ６１４を任意選択的に含む、「電話」とラベル付けされた電話モジュール１３８用のアイコン６１６、
○未読電子メールの数のインジケータ６１０を任意選択的に含む、「メール」とラベル付けされた、電子メールクライアントモジュール１４０用のアイコン６１８、
○「ブラウザ」とラベル付けされた、ブラウザモジュール１４７用のアイコン６２０、
○「ｉＰｏｄ」とラベル付けされた、ｉＰｏｄ（Ａｐｐｌｅ  Ｉｎｃ．の商標）モジュール１５２とも称されるビデオ及び音楽プレーヤモジュール１５２用のアイコン６２２、
●下記などの、その他のアプリケーション用のアイコン、
○「メッセージ」とラベル付けされた、ＩＭモジュール１４１用のアイコン６２４、
○「カレンダー」とラベル付けされた、カレンダーモジュール１４８用のアイコン６２６、
○「写真」とラベル付けされた、画像管理モジュール１４４用のアイコン６２８、
○「カメラ」とラベル付けされた、カメラモジュール１４３用のアイコン６３０、
○「オンラインビデオ」とラベル付けされた、オンラインビデオモジュール１５５用のアイコン６３２、
○「株価」とラベル付けされた、株価ウィジェット１４９−２用のアイコン６３４、
○「地図」とラベル付けされた、地図モジュール１５４用のアイコン６３６、
○「気象」とラベル付けされた、気象ウィジェット１４９−１用のアイコン６３８、
○「時計」とラベル付けされた、アラーム時計ウィジェット１６９−６用のアイコン６４０、
○「トレーニングサポート」とラベル付けされた、トレーニングサポートモジュール１４２用のアイコン６４２、
○「メモ」とラベル付けされた、メモモジュール１５３用のアイコン６４４、並びに
○デバイス１００及びその様々なアプリケーション１３６に関する設定へのアクセスを提供する、設定アプリケーション若しくはモジュール用のアイコン６４６。
【０１６７】
図６Ａに示されているアイコンのラベルは、単に例示的であることに留意されたい。例えば、一部の実施形態では、ビデオ及び音楽プレーヤモジュール１５２用のアイコン６２２は、「音楽」又は「音楽プレーヤ」とラベル付けされる。他のラベルが、様々なアプリケーションアイコンのために、任意選択的に使用される。一部の実施形態では、それぞれのアプリケーションアイコンに関するラベルは、それぞれのアプリケーションアイコンに対応するアプリケーションの名前を含む。一部の実施形態では、特定のアプリケーションアイコンのラベルは、その特定のアプリケーションアイコンに対応するアプリケーションの名前とは異なる。
【０１６８】
図６Ｂは、ディスプレイ６５０とは別個のタッチ感知面６５１（例えば、タブレット又はタッチパッド３５５、図３）を備えるデバイス（例えば、デバイス３００、図３）上の例示的なユーザインターフェースを示す。デバイス３００はまた、タッチ感知面６５１上の接触の強度を検出するための１つ以上の接触強度センサ（例えば、センサ３５９のうちの１つ以上）、及び／又はデバイス３００のユーザに対する触知出力を生成するための１つ以上の触知出力生成器３５９を任意選択的に含む。
【０１６９】
図６Ｂは、ディスプレイ６５０とは別個のタッチ感知面６５１（例えば、タブレット又はタッチパッド３５５、図３）を備えるデバイス（例えば、デバイス３００、図３）上の例示的なユーザインターフェースを示す。以下の実施例のうちの多くは、図６Ｂに示すように、ディスプレイとは別個のタッチ感知面上の入力を検出するデバイスを参照して与えられることになる。一部の実施形態では、タッチ感知面（例えば、図６Ｂの６５１）は、ディスプレイ（例えば、６５０）上の主軸（例えば、図６Ｂの６５３）に対応する主軸（例えば、図６Ｂの６５２）を有する。これらの実施形態によれば、デバイスは、ディスプレイ上のそれぞれの場所に対応する場所（例えば、図６Ｂにおいて、６６０は６６８と対応し、６６２は６７０と対応する）でのタッチ感知面６５１との接触（例えば、図６Ｂの６６０及び６６２）を検出する。このように、タッチ感知面がディスプレイとは別個のものである時、タッチ感知面（例えば、図６Ｂの６５１）上でデバイスによって検出されたユーザ入力（例えば、接触６６０及び６６２、及びそれらの移動）は、多機能デバイスのディスプレイ（例えば、図６Ｂの６５０）上のユーザインターフェースを操作するために、デバイスによって使用される。同様の方法が、本明細書に記載の他のユーザインターフェースに任意選択的に使用されることを理解されたい。
【０１７０】
更に、以下の実施例は、主に指入力（例えば、指の接触、フィンガタップジェスチャ、フィンガスワイプジェスチャなど）を参照して与えられるが、一部の実施形態では、それらの指入力のうちの１つ以上は、別の入力デバイスからの入力（例えば、スタイラス入力）で置き換えられることを理解されたい。
【０１７１】
本明細書で使用するとき、用語「フォーカスセレクタ」は、ユーザが対話しているユーザインターフェースの現在の部分を示す入力要素を指す。カーソル又は他のロケーションマーカを含む一部の実装形態では、カーソルは「フォーカスセレクタ」として機能し、これにより、カーソルが特定のユーザインターフェース要素（例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインターフェース要素）の上にある間に、タッチ感知面（例えば、図３のタッチパッド３５５、又は図６Ｂのタッチ感知面６５１）上で入力（例えば、押圧入力）が検出されるとき、特定のユーザインターフェース要素は、検出された入力に従って調節されるようになっている。タッチスクリーンディスプレイ上のユーザインターフェース要素との直接的な対話を可能にする、タッチスクリーンディスプレイ（例えば、図１Ａのタッチ感知ディスプレイシステム１１２、又は図６Ａのタッチスクリーン）を含む一部の実装形態では、タッチスクリーン上で検出された接触が「フォーカスセレクタ」として機能し、これにより、タッチスクリーンディスプレイ上の特定のユーザインターフェース要素（例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインターフェース要素）の場所で入力（例えば、接触による押圧入力）が、検出されるとき、その特定のユーザインターフェース要素は、検出された入力に従って調節されるようになっている。一部の実装形態では、（例えば、タブキー又は矢印キーを使用してフォーカスをあるボタンから別のボタンに移動させることにより）タッチスクリーンディスプレイ上の対応するカーソルの移動又は接触の移動なしに、ユーザインターフェースのある領域からそのユーザインターフェースの別の領域へとフォーカスが移動される。これらの実装形態では、フォーカスセレクタは、ユーザインターフェースの異なる領域間でのフォーカスの移動に従って移動する。フォーカスセレクタが採用する具体的な形態とは関わりなく、フォーカスセレクタは一般的に、ユーザが意図するユーザインターフェースとの対話を（例えば、ユーザが対話することを意図しているユーザインターフェースの要素をデバイスに示すことによって）通信するためにユーザによって制御される、ユーザインターフェース要素（又は、タッチスクリーンディスプレイ上の接触）である。例えば、タッチ感知面（例えば、タッチパッド又はタッチスクリーン）上で押圧入力が検出される間の、それぞれのボタンの上のフォーカスセレクタ（例えば、カーソル、接触、又は選択ボックス）の場所は、（そのデバイスのディスプレイ上に示された他のユーザインターフェース要素ではなく）その対応するボタンをアクティブ化することをユーザが意図していることを示すものである。
【０１７２】
本明細書及び特許請求の範囲で使用される時、タッチ感知面上の接触の「強度」という用語は、タッチ感知面上の接触（例えば、指の接触又はスタイラスの接触）の力若しくは圧力（単位面積当りの力）、又はタッチ感知面上の接触の力若しくは圧力の代用物（プロキシ）を指す。接触の強度は、少なくとも４つの異なる値を含み、より典型的には、何百もの（例えば、少なくとも２５６個の）異なる値を含む、値の範囲を有する。接触の強度は任意選択的に、様々な手法、及び様々なセンサ又はセンサの組合せを用いて、判定（又は測定）される。例えば、タッチ感知面の下に又はこれに隣接して配置された１つ以上の力センサは、タッチ感知面上の様々な点における力を測定するために、任意選択的に使用される。いくつかの実装形態では、複数の力センサの力測定値を組み合わせて（例えば、加重平均又は合計）、推定される接触の力を判定する。同様に、スタイラスの感圧先端部を任意選択的に使用して、タッチ感知面上のスタイラスの圧力を判定する。あるいは、タッチ感知面上で検出される接触領域のサイズ及び／若しくはその変化、接触に近接しているタッチ感知面の静電容量及び／若しくはその変化、並びに／又は、接触に近接しているタッチ感知面の抵抗及び／若しくはその変化が、タッチ感知面上の接触の力又は圧力の代用物として、任意選択的に使用される。一部の実装形態では、接触の力又は圧力の代用となる測定値は、強度閾値を超えているか否かを判定するために直接使用される（例えば、強度閾値は、代用となる測定値に対応する単位で記述される）。いくつかの実装では、接触の力又は圧力の代用となる測定値は、推定される力又は圧力に変換され、この推定される力又は圧力を使用して、強度閾値を超えているか否かを判定する（例えば、強度閾値は、圧力の単位で測定された圧力閾値である）。接触の強度をユーザ入力の属性として使用することは、アフォーダンスを（例えば、タッチ感知ディスプレイ上に）表示するため、及び／又はユーザ入力を（例えば、タッチ感知ディスプレイ、タッチ感知面、又はノブ若しくはボタンなどの物理的／機械的制御を介して）受信するための面積が制限された、低減されたサイズのデバイスにおいて、ユーザによるアクセスが他の場合に容易には不可能であり得る、追加のデバイス機能へのユーザのアクセスを可能にする。
【０１７３】
一部の実施形態では、接触／動きモジュール１３０及び／又は４３０は、ユーザによって動作が実行されたか否かを判定するための（例えば、ユーザがアイコン上で「クリック」したか否かを判定するための）、１つ以上の強度閾値のセットを使用する。一部の実施形態では、少なくとも強度閾値のサブセットが、ソフトウェアパラメータに従って判定される（例えば、強度閾値は、特定の物理アクチュエータのアクティブ化閾値によって判定されず、デバイス１００の物理ハードウェアを変更することなく調節可能である）。例えば、トラックパッド又はタッチスクリーンディスプレイのマウス「クリック」閾値は、トラックパッド又はタッチスクリーンディスプレイハードウェアを変更することなく、広範囲の所定の閾値のうちのいずれかに設定し得る。加えて、一部の実施形態では、デバイスのユーザには、（例えば、個々の強度閾値を調節することにより、及び／又は、システムレベルのクリック「強度」パラメータを用いて複数の強度閾値を一度に調節することにより）強度閾値のセットのうちの１つ以上を調節するためのソフトウェア設定が提供されている。
【０１７４】
本明細書及び特許請求の範囲で使用するとき、接触の「特性強度」という用語は、接触の１つ以上の強度に基づく、その接触の特性を指す。一部の実施形態では、特性強度は複数の強度サンプルに基づく。特性強度は、任意選択的に、所定の数の強度サンプル、あるいは、所定のイベント（例えば、接触を検出した後、接触のリフトオフを検出する前、接触の移動の開始を検出する前若しくは後、接触の終了を検出する前、接触の強度の増加を検出する前若しくは後、及び／又は接触の強度の減少を検出する前若しくは後）に対して所定の時間期間（例えば、０．０５、０．１、０．２、０．５、１、２、５、１０秒）内に収集された、強度サンプルのセットに基づく。接触の特性強度は、任意選択的に、接触の強度の最大値、接触の強度の平均値（mean value）、接触の強度の平均値（average value）、接触の強度の上位１０％値、接触の強度の最大値の半分の値、接触の強度の最大値の９０％の値、などのうちの１つ以上に基づく。一部の実施形態では、特性強度を判定する際に、接触の持続期間が使用される（例えば、特性強度が経時的な接触の強度の平均であるとき）。一部の実施形態では、動作がユーザによって実行されたか否かを判定するために、特性強度を１つ以上の強度閾値のセットと比較する。例えば、１つ以上の強度閾値のセットは、第１の強度閾値及び第２の強度閾値を含むことができる。この実施例では、第１の閾値を上回らない特性強度を有する接触の結果として第１の動作が実行され、第１の強度閾値を上回り第２の強度閾値を上回らない特性強度を有する接触の結果として第２の動作が実行され、第２の強度閾値を上回る特性強度を有する接触の結果として第３の動作が実行される。一部の実施形態では、特性強度と１つ以上の強度閾値との間の比較が、第１の動作又は第２の動作のいずれを実行するかを判定するために使用されるのではなく、１つ以上の動作を実行するかどうか（例えば、それぞれのオプションを実行するのか、又はそれぞれの動作の実行を取り止めるのか）を判定するために使用される。
【０１７５】
一部の実施形態では、特性強度を判定する目的で、ジェスチャの一部分が特定される。例えば、タッチ感知面は、開始場所から遷移して終了場所まで達する連続的なスワイプ接触（例えば、ドラッグジェスチャ）を受け取る場合があり、この終了場所で接触の強度が増加する。この実施例では、終了場所における接触の特性強度は、連続的なスワイプ接触全体ではなく、そのスワイプ接触の一部分のみ（例えば、スワイプ接触の終了場所における部分のみ）に基づいてもよい。一部の実施形態では、接触の特性強度を判定する前に、平滑化アルゴリズムをそのスワイプ接触の強度に適用してもよい。例えば、平滑化アルゴリズムは任意選択的に、非加重移動平均平滑化アルゴリズム、三角平滑化アルゴリズム、中央値フィルタ平滑化アルゴリズム、及び／又は指数平滑化アルゴリズム、のうちの１つ以上を含む。一部の状況では、これらの平滑化アルゴリズムは、特性強度を判定する目的で、スワイプ接触の強度の小幅な上昇又は低下を除外する。
【０１７６】
後述するユーザインターフェースの図（例えば、図７Ａ〜図７ＢＢＢ）は任意選択的に、１つ以上の強度閾値（例えば、第１の強度閾値ＩＬ、第２の強度閾値ＩＭ、第３の強度閾値ＩＨ、及び／又は１つ以上の他の強度閾値）に対する、タッチ感知面上の接触の現在の強度を示す、様々な強度の図表を含む。この強度の図表は、典型的には、表示されるユーザインターフェースの一部ではないが、それらの図の解釈に役立てるために提供される。一部の実施形態では、第１の強度閾値は、物理マウスのボタン又はトラックパッドのクリックに通常関連付けられる動作を、デバイスが実行することになる強度に相当する。一部の実施形態では、第２及び第３の強度閾値は、物理マウスのボタン又はトラックパッドのクリックに通常関連付けられる動作とは異なる動作を、デバイスが実行することになる強度に相当する。一部の実施形態では、第１の強度閾値を下回る（例えば、かつ、それを下回ると接触がもはや検出されないわずかな接触検出強度閾値を上回る）特性強度で接触が検出される場合、デバイスは、軽い押圧強度閾値又は深い押圧強度閾値に関連付けられた動作を実行することなく、タッチ感知面上の接触の移動に従って、フォーカスセレクタを移動させる。全般的には、別途記載のない限り、これらの強度閾値は、ユーザインターフェース図の異なるセット間で一貫している。
【０１７７】
一部の実施形態では、デバイスにより検出された入力へのデバイスの応答は、入力の間の接触強度に基づく基準によって決まる。例えば、一部の入力に対して、入力の間の第１の強度閾値を上回る接触の強度は、第１の応答をトリガする。一部の実施形態では、デバイスにより検出された入力へのデバイスの応答は、入力の間の接触強度及び時間に基づく基準の両方を含む基準によって決まる。例えば、いくつかの入力に対して、入力の間の、（例えば、軽い押圧に対する）第１の強度閾値より大きい第２の強度閾値を超える接触の強度は、第１の強度閾値が満たされてから第２の強度閾値が満たされるまでの間に遅延時間が経過した場合のみ、第２の応答をトリガする。この遅延時間は、典型的には、持続時間が２００ｍｓ未満（例えば、第２の強度閾値の大きさにより、４０ｍｓ、１００ｍｓ、又は１２０ｍｓであり、遅延時間は第２の強度閾値が増大するにつれ増大する）である。この遅延時間は、第２の応答の偶発的なトリガを回避するのに役立つ。別の実施例として、ある入力では、第１の強度閾値が満たされる時間の後に発生する、感度が低減した時間期間が存在する。感度が低減した時間期間の間、第２の強度閾値は増大する。第２の強度閾値のこの一時的な増大もまた、第２の応答の偶発的なトリガを回避するのに役立つ。他の入力では、第２の応答は、時間に基づく基準によっては決まらない。
【０１７８】
一部の実施形態では、入力強度閾値及び／又は対応する出力のうちの１つ以上は、ユーザ設定、接触の動き、入力タイミング、実行しているアプリケーション、強度が加わる速度、同時に行われる入力の数、ユーザ履歴、環境要因（例えば、周囲ノイズ）、フォーカスセレクタの位置などの、１つ以上の要因に基づいて変化する。例示的な要因が、米国特許出願第１４／３９９，６０６号及び第１４／６２４，２９６号に記載されており、これらの全体が参照により本願に組み込まれている。
【０１７９】
強度閾値ＩＬを下回る強度から、強度閾値ＩＬと強度閾値ＩＭとの間の強度への、接触の特性強度の増大は、「軽い押圧」入力と称される場合がある。強度閾値ＩＭを下回る強度から、強度閾値ＩＭを上回る強度への、接触の特性強度の増大は、「深い押圧」入力と称される場合がある。一部の実施形態では、強度閾値ＩＨを下回る強度から、強度閾値ＩＨを上回る強度への、接触の特性強度の増大も、「深い押圧」入力と呼ばれる。接触検出強度閾値を下回る強度から、接触検出強度閾値と強度閾値ＩＬとの間の強度への、接触の特性強度の増大は、タッチ面上の接触の検出と称される場合がある。接触検出強度閾値を上回る強度から、接触検出強度閾値を下回る強度への、接触の特性強度の減少は、タッチ面からの接触のリフトオフの検出と称される場合がある。一部の実施形態では、接触検出強度閾値はゼロである。一部の実施形態では、接触検出強度閾値はゼロよりも大きい。一部の図では、タッチ感知面上の接触の強度を表すために、影付きの円又は楕円が使用される。一部の図では、それぞれの接触の強度を指定することなく、タッチ感知面上のそれぞれの接触を表すために、影なしの円又は楕円が使用される。
【０１８０】
本明細書で説明される一部の実施形態では、１つ以上の動作は、それぞれの押圧入力を含むジェスチャの検出に応じて、又はそれぞれの接触（又は複数の接触）で実行されるそれぞれの押圧入力の検出に応じて実行され、それらのそれぞれの押圧入力は、押圧入力強度閾値を上回る接触（又は複数の接触）の強度の増大の検出に少なくとも部分的に基づいて検出される。一部の実施形態では、それぞれの動作は、押圧入力強度閾値を上回る、それぞれの接触の強度の増大の検出に応じて、実行される（例えば、それぞれの動作は、それぞれの押圧入力の「ダウンストローク」により実行される）。一部の実施形態では、押圧入力は、押圧入力強度閾値を上回る、それぞれの接触の強度の増大、及び続く押圧入力強度閾値を下回る接触の強度の減少を含み、それぞれの動作は、その続く押圧入力閾値を下回るそれぞれの接触の強度の減少の検出に応じて実行される（例えば、それぞれの動作は、それぞれの押圧入力の「アップストローク」により実行される）。
【０１８１】
一部の実施形態では、デバイスは、「ジッタ」と呼ばれる場合がある不測の入力を回避するために強度ヒステリシスを採用し、この場合、デバイスは、押圧入力強度閾値との所定の関連性を有するヒステリシス強度閾値を定義又は選択する（例えば、ヒステリシス強度閾値は、押圧入力強度閾値よりも低いＸ強度単位か、又は、ヒステリシス強度閾値は、押圧入力強度閾値の７５％、９０％、若しくは何らかの妥当な比率である）。それゆえ、一部の実施形態では、押圧入力は、押圧入力強度閾値を上回る、それぞれの接触の強度の増大、及び続く押圧入力強度閾値に対応するヒステリシス強度閾値を下回る接触の強度の減少を含み、それぞれの動作は、その続くヒステリシス強度閾値を下回るそれぞれの接触の強度の減少の検出に応じて実行される（例えば、それぞれの動作は、それぞれの押圧入力の「アップストローク」により実行される）。同様に、一部の実施形態では、押圧入力は、デバイスが、ヒステリシス強度閾値以下の強度から押圧入力強度閾値以上の強度への接触の強度の増大、及び任意選択的に、続くヒステリシス強度以下の強度への接触の強度の減少を検出する場合にのみ検出され、それぞれの動作は、その押圧入力の検出（例えば、状況に応じて、接触の強度の増大、又は接触の強度の減少）に応じて実行される。
【０１８２】
説明を容易にするために、押圧入力強度閾値に関連付けられた押圧入力に応じて、又はその押圧入力を含むジェスチャに応じて実行される動作の説明は、押圧入力強度閾値を上回る接触の強度の増大、ヒステリシス強度閾値を下回る強度から押圧入力強度閾値を上回る強度への接触の強度の増大、押圧入力強度閾値を下回る接触の強度の減少、又は押圧入力強度閾値に対応するヒステリシス強度閾値を下回る接触の強度の減少の検出に応じて、任意選択的にトリガされる。加えて、押圧入力強度閾値を下回る接触の強度の減少を検出したことに応じて動作が実行されるとして説明される実施例では、その動作は、押圧入力強度閾値に対応しかつそれよりも低いヒステリシス強度閾値を下回る、接触の強度の減少を検出したことに応じて、任意選択的に実行される。上述のように、一部の実施形態では、これらの応答のトリガはまた、時間に基づく基準が満たされていること（例えば、低い強度閾値が満たされてから高い強度閾値が満たされるまでの間に遅延時間が経過している）によっても決まる。
ユーザインターフェース及び関連プロセス
【０１８３】
ここで、ディスプレイとタッチ感知面とタッチ感知面との接触の強度を検出するための１つ以上のセンサとを備える、ポータブル多機能デバイス１００又はデバイス３００などの電子デバイス上で実装され得る、ユーザインターフェース（「ＵＩ」）及び関連プロセスの実施形態に注意を向ける。
【０１８４】
図７Ａ〜図７ＢＢＢは、一部の実施形態による、ウェブページ中の、タッチ入力を命令で処理するための、例示的なユーザインターフェースを示す。これらの図のユーザインターフェースは、図８Ａ〜図８Ｃ及び図９の処理を含む、後述する処理を示すために使用される。以下の実施例のうちの一部は、ディスプレイ６５０とは別個のタッチ感知面６５１を参照して与えられるが、一部の実施形態では、デバイスは、図６Ａに示すように、（タッチ感知面とディスプレイを組み合わせた）タッチスクリーンディスプレイ上の入力を検出する。
【０１８５】
図７Ａは、ディスプレイ６５０上のユーザインターフェース７０６がメールアプリケーション（例えば、電子メールクライアントモジュール１４０、図１Ａ）のユーザインターフェースを含むことを示す。
【０１８６】
図７Ａは、ジェスチャレコグナイザのための状態機械７０４も示す。ジェスチャレコグナイザのための状態機械７０４並びに（ジェスチャイベントの処理を含む）イベント処理動作は、付録Ａに詳細に記載されており、この付録Ａはその全体が、参照により本願に組み込まれている。この実施例では、４つのジェスチャレコグナイザのための状態機械７０４が示され、各々が図７Ａでは単一の文字、すなわち、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、タップジェスチャレコグナイザ（Ｔ）、及びコミットジェスチャレコグナイザ（Ｃ）によって表されている。図７Ａに示すように、これらのジェスチャレコグナイザのうちの３つに、異なる強度閾値が関連付けられる。すなわち、第１の強度閾値ＩＬはリビールジェスチャレコグナイザに関連付けられ、第２の強度閾値ＩＭはプレビュージェスチャレコグナイザに関連付けられ、第３の強度閾値ＩＨはコミットジェスチャレコグナイザに関連付けられる。この実施例では、第３の強度閾値ＩＨは第２の強度閾値ＩＭよりも大きく（すなわち、高く）、第２の強度閾値ＩＭは、第１の強度閾値ＩＬよりも大きい（すなわち、高い）。
【０１８７】
図７Ａは、ユーザインターフェース７０６内のユーザインターフェースオブジェクト７０８又はフィーチャの上に位置付けられた、フォーカスセレクタ７０５の位置を示す。フォーカスセレクタ７０５の位置は、タッチ感知面（例えば、タッチ感知面６５１、又はタッチスクリーンディスプレイ６５０のタッチ感知面、図６Ｂ）上の、対応するユーザ入力の位置に対応する。
【０１８８】
ユーザ入力強度のグラフ７０２に示すように、ユーザ入力の強度（接触強度とも呼ばれる）は、最初は第１の強度閾値ＩＬを下回っている。
【０１８９】
図７Ｂは、フォーカスセレクタ７０５に対応するユーザ入力がタップジェスチャであるとき結果的に生じる、新しいユーザインターフェース７１０を示す。強度プロファイル７１０２、７１０４、７１０６、及び７１０８はすべてタップジェスチャに対応し、したがって、時間７００２で終了する時間期間によって表される第１の所定の時間期間の完了の前に、終了する。これらの４つの強度プロファイルはすべて、ジェスチャのピーク強度が３つの強度閾値のうちの１つ以上よりも大きいときであってもタップジェスチャに対応しているが、その理由は、ユーザ入力が第１の所定の時間期間の間、タッチ感知面上に留まらないからである。
【０１９０】
一部の実施形態では、強度プロファイル７１１０はまた、ユーザ入力が第１の所定の時間期間の間タッチ感知面上に留まるものの、タップジェスチャに対応しているが、その理由は、ユーザ入力が第１の強度閾値ＩＬを決して超えないからである。しかしながら、一部の他の実施形態では、強度プロファイル７１１０を有するユーザ入力は、どのような動作の実行も引き起こさない非イベントと解釈される。
【０１９１】
図７Ｂはまた、タップジェスチャレコグナイザ（Ｔ）のための状態機械が、図７Ａに示すような可能状態から、認識された状態に遷移することも示す。更に、図７Ｂは、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、及びコミットジェスチャレコグナイザ（Ｃ）のための状態機械がすべて、可能状態から失敗した状態に遷移していることを示す。これは、強度プロファイル７１０２、７１０４、７１０６、７１０８、及び７１１０のうちのいずれの１つに関しても、これらのジェスチャレコグナイザによるジェスチャ認識のために必要な強度入力基準又は持続時間基準のいずれかを、入力が満足していないことによる。別法として又は加えて、失敗した状態に遷移するジェスチャレコグナイザの各々がそのように振る舞うのは、タップジェスチャレコグナイザ（Ｔ）によるタップジェスチャの認識が、他のすべてのジェスチャレコグナイザを失敗した状態に遷移させるためである。
【０１９２】
図７Ｃは、ユーザインターフェース７０６の、その図７Ａのユーザインターフェースの状態からの遷移を示す。特に、ユーザ入力の強度がリビールジェスチャレコグナイザ（Ｒ）に関する強度入力基準を満足するとの判定に従って、リビールジェスチャレコグナイザは、開始された状態に遷移する。一部の実施形態では、ユーザ入力の強度は、ユーザ入力の強度が第１の強度閾値ＩＬに達するとき、リビールジェスチャレコグナイザ（Ｒ）に関する強度入力基準を満足する。一部の他の実施形態では、ユーザ入力の強度は、ユーザ入力の強度が第１の強度閾値ＩＬを超えるとき、リビールジェスチャレコグナイザ（Ｒ）に関する強度入力基準を満足する。
【０１９３】
任意選択的に、リビールジェスチャレコグナイザが開始された状態に遷移するとき、リビールジェスチャレコグナイザが可能状態にあるときとは異なる外観を有するフォーカスセレクタ７０５が、表示されるか又は表示用に提供される。
【０１９４】
一部の実施形態では、ユーザ入力の強度がリビールジェスチャレコグナイザ（Ｒ）に関する強度入力基準を満足するとの判定に従って、ユーザ入力の強度がリビールジェスチャレコグナイザ（Ｒ）に関する強度入力基準を満足することを示す内部イベント７００４が生成される。このイベントは、リビールジェスチャレコグナイザ（Ｒ）に提供され、リビールジェスチャレコグナイザ（Ｒ）は、このイベントに応じて開始された状態に遷移する。イベント７００４は任意選択的に、図７Ｃで進度インジケータ７５０によって図式的に表されている、進度インジケータを含み、これは、第１の強度閾値ＩＬと第２の強度閾値ＩＭとの間のユーザ入力の強度の進度の量を示す。一部の実施形態では、進度インジケータ７５０は、例えば０〜１の値を有する正規化値であり、ユーザ入力の強度が第１の強度閾値ＩＬに等しいか又はこれに達したとき、最初は０の値又はゼロに近い値をとる。
【０１９５】
図７Ｄでは、ユーザ入力の強度は、図７Ｃに示すような第１の強度閾値ＩＬに等しいか又はほぼ等しい強度から、第１の強度閾値ＩＬを上回りかつ第２の強度閾値ＩＭを下回る強度に変更されている。ユーザ入力の強度のこの増大に応じて、進度インジケータ７５０の値は、第１の強度閾値ＩＬと第２の強度閾値ＩＭとの間の範囲の、現在のユーザ入力強度が当てはまるところを示す値まで増大する。更に、リビールジェスチャレコグナイザ（Ｒ）の状態は変更された状態に遷移し、ユーザインターフェース７０６は、ユーザ入力の位置に対応する不鮮明にされていないユーザインターフェースオブジェクト７０８を除いて、不鮮明にされるか又は不鮮明な状態に遷移する。このようにして、ユーザがユーザ入力の強度を引き続き増大させる場合、ユーザインターフェースオブジェクト７０８に関するアクション又は動作が発生することが、ユーザに通知される。
【０１９６】
図７Ｅでは、ユーザ入力の強度は、図７Ｄのユーザ入力の強度から更に増大している。リビールジェスチャレコグナイザ（Ｒ）は、変更された状態に留まる。更に、プレビュープラッタと呼ばれる場合もある、プレビュー領域７１２を小さくしたものが、オブジェクト７０８を除いて不鮮明なままであるユーザインターフェース７０６内に又はその上に、表示される。一部の実施形態では、プレビュー領域７１２のサイズは、進度インジケータ７５０の値に対応する。一部の実施形態では、プレビュー領域７１２は最初は、進度インジケータ７５０が０．４又は０．５などの所定の値に達するときのみ表示される。
【０１９７】
図７Ｆでは、ユーザ入力の強度は、図７Ｅのユーザ入力の強度から更に増大している。リビールジェスチャレコグナイザ（Ｒ）は変更された状態のままであり、またユーザインターフェース７０６は、オブジェクト７０８を除いて不鮮明なままである。更に、プレビュー領域７１２のサイズは、ユーザインターフェース７０６内に又はその上に表示されているとき、ユーザ入力の強度の増大に従って又は進度インジケータ７５０の値の増大に従って、増大している。図７Ｆでは、プレビュー領域７１２のサイズは、ユーザがプレビュー領域７１２の内容を読むことを可能にするのに十分な程度に増大している。この実施例では、プレビュー領域７１２は、フォーカスセレクタ７０５が上に位置付けられるユーザインターフェースオブジェクト７０８に対応する情報のプレビューを含む。この実施例では、プレビューされた情報は、フォーカスセレクタ７０５が上に位置付けられるユーザインターフェースオブジェクト７０８に対応する人に関連付けられた関係先のプレビューを含む。
【０１９８】
図７Ｇでは、ユーザ入力の強度は、図７Ｅのユーザ入力の強度から第２の強度閾値ＩＭに等しいか又はほぼ等しい強度へと、更に増大している。進度インジケータ７５０はこの時点で、その最大値、例えば１を有し、これはユーザ入力の強度が、その進度インジケータに対応する範囲の最大値に達したことを示す。任意選択的に、第２の強度閾値ＩＭと第３の強度閾値ＩＨとの間の強度範囲に関するユーザ入力の状態を示す、第２の進度インジケータ７５２が生成される。図７Ｇでは、第２の進度インジケータ７５２は、ユーザ入力の強度が第２の強度閾値ＩＭと第３の強度閾値ＩＨとの間の強度範囲の下端にあることを示す、その最小値をとる。
【０１９９】
ユーザ入力の強度が第２の強度閾値ＩＭに達することに従って、リビールジェスチャレコグナイザ（Ｒ）は変更された状態に留まるか、又は別法として中止された状態に遷移し、タップジェスチャレコグナイザは失敗した状態に遷移し、プレビュージェスチャレコグナイザは開始された状態に遷移し、プレビュー領域７１２が、その最大サイズ（本明細書ではフルサイズと呼ばれる場合もある）か又はその最大サイズに近いサイズのいずれかで表示される。プレビュー領域７１２は引き続き、フォーカスセレクタ７０５が上に位置付けられるユーザインターフェースオブジェクト７０８に対応する情報のプレビューを含んでいる。
【０２００】
図７Ｈでは、ユーザ入力の強度は、図７Ｇのユーザ入力の強度から第２の強度閾値ＩＭを上回りかつ第３の強度閾値ＩＨを下回る強度へと、更に増大している。進度インジケータ７５０は、その最大値、例えば１のままであるが、その理由は、ユーザ入力の強度が、その進度インジケータに対応する範囲の最大値を上回っているためである。第２の進度インジケータ７５２はこの時点で、この進度インジケータ７５２に関する最小値と最大値との間の、その中間値をとり、これは、第２の強度閾値ＩＭと第３の強度閾値ＩＨとの間の強度範囲に関する現在のユーザ入力の状態を示す。
【０２０１】
ユーザ入力の強度が第２の強度閾値ＩＭを超えることに従って、リビールジェスチャレコグナイザ（Ｒ）は変更された状態に留まるか、又は別法として中止された状態に遷移し、タップジェスチャレコグナイザは失敗した状態に留まり、プレビュージェスチャレコグナイザは変更された状態に遷移し、プレビュー領域７１２が、その最大サイズ（本明細書ではフルサイズと呼ばれる場合もある）で表示される。プレビュー領域７１２は引き続き、フォーカスセレクタ７０５が上に位置付けられるユーザインターフェースオブジェクト７０８に対応する情報のプレビューを含んでいる。
【０２０２】
図７Ｉでは、ユーザ入力の強度は、図７Ｈのユーザ入力の強度から第３の強度閾値ＩＨ以上の強度へと、更に増大している。進度インジケータ７５０は、その最大値、例えば１のままであるが、その理由は、ユーザ入力の強度が、その進度インジケータに対応する範囲の最大値を上回っているためである。第２の進度インジケータ７５２はこの時点で、第２の強度閾値ＩＭと第３の強度閾値ＩＨとの間の強度範囲に関する現在のユーザ入力の状態を示す、その最大値をとる。任意選択的に、第３の強度閾値ＩＨに達すると、ユーザ入力の強度を示しかつ任意選択的に進度インジケータ７５０、７５２の一方又は両方を含む、イベント７００８が生成される。
【０２０３】
ユーザ入力の強度が第３の強度閾値ＩＨに達することに従って、リビールジェスチャレコグナイザ（Ｒ）は中止された状態に遷移し、タップジェスチャレコグナイザは失敗した状態に留まり、プレビュージェスチャレコグナイザは中止された状態に遷移し、コミットジェスチャレコグナイザは認識された状態に遷移する。更に、ユーザ入力の強度が第３の強度閾値ＩＨに達することに従って、プレビュー領域７１２はもはや表示されず、代わりに、ユーザインターフェースオブジェクト７０８の選択に対応する新しいユーザインターフェース７１０が表示される。図７Ｉに示す実施例では、ユーザインターフェースオブジェクト７０８の選択により、ユーザインターフェースオブジェクト７０８に対応する人又はエンティティに関する関係先情報が、表示、又は表示用に提供されている。
【０２０４】
図７Ｊでは、ユーザ入力の強度は、図７Ｈのユーザ入力の強度から第２の強度閾値ＩＭを下回る強度へと、減少している。この実施例では、ユーザ入力の強度は第３の強度閾値ＩＨに達しておらず、したがって、コミットジェスチャレコグナイザは可能状態に留まっている。更に、進度インジケータ７５０はその最大値を下回る値に遷移するが、その理由は、ユーザ入力の強度がこの時点で、この進度インジケータに対応する範囲の最大値を下回っているからである。第２の進度インジケータ７５２はこの時点で、第２の強度閾値ＩＭと第３の強度閾値ＩＨとの間の強度範囲に関する現在のユーザ入力の状態を示す、その最小値をとる。言い換えれば、ユーザ入力の強度が第２の強度閾値ＩＭを下回っているので、第２の進度インジケータ７５２はその最小値をとる。任意選択的に、ユーザ入力の強度の変化によりイベント（図示せず）が生成され、この場合、このイベントは、ユーザ入力の強度を示しかつ任意選択的に進度インジケータ７５０、７５２の一方又は両方を含む情報を含む。
【０２０５】
ユーザ入力の強度が第２の強度閾値ＩＭを下回る強度まで減少することに従って、最初に第３の強度閾値ＩＨに達することなく、リビールジェスチャレコグナイザ（Ｒ）は変更された状態に留まり、タップジェスチャレコグナイザは失敗した状態に留まり、プレビュージェスチャレコグナイザは変更された状態に留まり、コミットジェスチャレコグナイザは可能状態に留まる。更に、ユーザ入力の強度の減少に従って、プレビュー領域７１２のサイズは、ユーザ入力の強度がより高いときに表示されたサイズ（図７Ｈを参照）から減少する。
【０２０６】
図７Ｋでは、ユーザ入力は、先に（強度プロファイル７１１２に対応する）第１の強度閾値ＩＬ又は（強度プロファイル７１１４に対応する）第２の強度閾値ＩＭに達したか又はこれを超えた後で、第３の強度閾値ＩＨを超えることなく終了するが、この終了はユーザ入力のゼロ強度によって示されている。更に、ジェスチャの持続時間は時間７００２に対応する第１の所定の期間を超えるが、これは、入力が第１の所定の時間期間の間タッチ感知面上に留まるのをやめることを含むタップ基準を、ジェスチャが満たさないことを示す。結果として、タップジェスチャレコグナイザは失敗した状態に遷移し、コミットジェスチャレコグナイザもまた、失敗した状態に遷移する。
【０２０７】
図７Ｋの強度プロファイル７１１４に従って、プレビュージェスチャレコグナイザは、入力が第２の強度閾値ＩＭを満足することを含む強度入力基準を入力の強度が満足しかつ第１の所定の時間期間の間入力がタッチ感知面上に留まることに応じて、ジェスチャの間に認識された状態に遷移し、次に、入力がタッチ感知面上に留まるのをやめることに応じて、失敗した状態に遷移する。
【０２０８】
図７Ｋの強度プロファイル７１１２に従って、プレビュージェスチャレコグナイザは、最初に認識された状態に遷移することなく、可能状態から失敗した状態に遷移するが、その理由は、強度プロファイル７１１２を有する入力が、一時的にさえも、プレビュージェスチャレコグナイザに関する強度入力基準を満足していないからである。
【０２０９】
任意選択的に、リビールジェスチャレコグナイザは、強度プロファイル７１１２又は強度プロファイル７１１４のいずれかを有する入力に応じて、認識された状態に遷移するが、その理由は、入力の強度が第１の強度閾値ＩＬを超え、かつ入力が第１の所定の時間期間の間タッチ感知面上に留まるからである。一部の実施形態では、図７Ｋには示されていないが、リビールジェスチャレコグナイザは、入力がタッチ感知面上に留まるのをやめることに応じて、中止された状態に遷移する。
【０２１０】
図７Ｌでは、アクティブジェスチャレコグナイザのセットは、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、パン又はスクロールジェスチャレコグナイザ（Ｓ）、及びコミットジェスチャレコグナイザ（Ｃ）を含む。図７Ｌに示すように、これらのジェスチャレコグナイザのうちの３つに、異なる強度閾値が関連付けられる。すなわち、第１の強度閾値ＩＬはリビールジェスチャレコグナイザに関連付けられ、第２の強度閾値ＩＭはプレビュージェスチャレコグナイザに関連付けられ、第３の強度閾値ＩＨはコミットジェスチャレコグナイザに関連付けられる。
【０２１１】
図７Ｌは、ユーザインターフェース７０６内のユーザインターフェースオブジェクト７０８又はフィーチャの上に位置付けられた、フォーカスセレクタ７０７の位置を示す。フォーカスセレクタ７０５の位置は、タッチ感知面（例えば、タッチ感知面６５１、又はタッチスクリーンディスプレイ６５０のタッチ感知面、図６Ｂ）上の、対応するユーザ入力の位置に対応する。図７Ｌはまた、フォーカスセレクタ７０７を取り囲む点線の円又は他の形状として示される、入力移動限界区域又は入力移動限界外周７１４も示す。典型的には、入力移動限界外周７１４は実際には表示されず、代わりに、入力移動限界外周７１４は、ジェスチャレコグナイザのうちの１つ以上が利用する入力移動限界を表す。図７Ｌに示すように、ユーザ入力の強度は、３つの強度閾値ＩＬ、ＩＭ及びＩＨのうちのいずれも満足しない。
【０２１２】
フォーカスセレクタ７０７に対応する入力が、図７Ｌに示す位置から図７Ｍに示す位置に移動するとき、入力はタッチ感知面にわたって少なくとも所定の距離だけ移動しており、このことが、フォーカスセレクタ７０７が、入力移動限界外周７１４を少なくとも部分的に越えて移動していることによって反映されている。結果として、グラフィカルユーザインターフェース７０６は、タッチ感知面上の入力が移動した距離に対応する量だけ、パン又はスクロールする。より一般的には、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動することに応じて、第２の動作が実行される。一部の実施形態では、第２の動作は、ユーザインターフェースの少なくとも一部をスクロールすることを含む。
【０２１３】
更に、図７Ｍに示すように、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動することに応じて、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、及びコミットジェスチャレコグナイザ（Ｃ）はすべて失敗した状態に遷移し、パンジェスチャレコグナイザ（Ｓ）は開始された状態に遷移する。
【０２１４】
図７Ｎでは、入力は、タッチ感知面にわたって引き続き移動し、これは、完全に入力移動限界外周７１４の外側にあるわけではない、フォーカスセレクタ７０７の更なる移動によって表される。入力のこの移動に応じて、パンジェスチャレコグナイザ（Ｓ）は変更された状態に遷移し、ユーザインターフェース７０６は、図７Ｍでのその位置と比較して上向きに更にスクロールされる。
【０２１５】
図７Ｌ、図７Ｍ、及び図７Ｎでの入力の強度は、第１の強度閾値ＩＬを下回ったままであることが留意される。入力の強度が第１の強度閾値ＩＬを満足することの結果については、以下で図７Ｏ〜図７Ｓ及び他の後続の図を検討する際に取り扱う。
【０２１６】
図７Ｏでは、ユーザ入力強度のグラフ７０に示すように、フォーカスセレクタ７０７によって表される入力が、第１の強度閾値ＩＬを満足しない強度で入力移動限界外周７１４を越えて既に移動した後で、入力の強度が増大して、第１の強度閾値ＩＬを満足する。第１の強度閾値ＩＬの満足は、フォーカスセレクタ７０７の外観の変化によって示される。ただし、ユーザ入力がこの時点で第１の強度閾値ＩＬを満足しているにも関わらず、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、及びコミットジェスチャレコグナイザ（Ｃ）はすべて失敗した状態に留まり、パンジェスチャレコグナイザ（Ｓ）は変更された状態に留まる。典型的には、ジェスチャレコグナイザは、失敗した状態に遷移してしまうと、ユーザ入力が終了するまで（すなわち、ユーザが自身の指又はスタイラス又は他の器具をタッチ感知面から持ち上げるまで）、認識された状態又は開始された状態などの他のいずれの状態にも遷移できない、ということが留意される。
【０２１７】
一部の状況では、ユーザインターフェース７０６は、ユーザ入力がタッチ感知面にわたって少なくとも所定の距離だけ移動する前に入力の強度が第１の強度閾値ＩＬを満足することに応じて、図７Ｌに示す状態から図７Ｐに示す状態に遷移する。例えば、図７Ｐでは、図７Ｌによって表されるタッチ感知面との最初の接触以降、入力は移動していないか、又は実質的に同じ場所に留まっている。入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足することに応じて、第１の動作が実行される。この実施例では、第１の動作は、ユーザ入力の位置に対応する不鮮明にされていないユーザインターフェースオブジェクト７０８を除いて、ユーザインターフェース７０６を不鮮明にすること又はユーザインターフェース７０６を不鮮明な状態に遷移させることを含む。
【０２１８】
更に、一部の実施形態では、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足することに応じて、プレビュージェスチャレコグナイザ（Ｐ）は可能状態から開始された状態に遷移し、上で検討した第１の動作の実行が、プレビュージェスチャレコグナイザ（Ｐ）が開始された状態に遷移することに応じて行われる。
【０２１９】
更に、図７Ｐに示すように、入力が実質的にその最初の場所に留まる（すなわち、タッチ感知面にわたって少なくとも所定の距離だけ移動しない）こと、及び入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足することに応じて、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及びパンジェスチャレコグナイザ（Ｓ）はすべて、可能状態に留まる。
【０２２０】
図７Ｐでフォーカスセレクタ７０７によって表されるタッチ感知面上の入力は、入力の第１の部分と呼ばれる場合があり、図７Ｑに示す同じ入力の後続の部分は、入力の第２の部分と呼ばれる場合がある。図７Ｐ及び図７Ｑに関して並びに図８Ａ〜図８Ｅに示すフローチャートに関してより詳細に示す、一部の状況では、入力の第１の部分は、第１のジェスチャレコグナイザ、例えばリビールジェスチャレコグナイザを用いて処理され、入力の第２の部分は、第２のジェスチャレコグナイザ、例えばパンジェスチャレコグナイザを用いて処理される。
【０２２１】
図７Ｑでは、（図７Ｐを参照して上で検討したように）プレビュージェスチャレコグナイザ（Ｐ）が可能状態から開始された状態に遷移した後で、入力は、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動していることを含むパン基準を満足するのに十分な量だけ移動する。入力がパン基準を満足するのに十分な量だけ移動することに応じて、ユーザインターフェース７０６はタッチ感知面にわたる入力の移動の量に対応する量だけスクロールされ、リビールジェスチャレコグナイザ（Ｒ）は中止された状態に遷移し、プレビュージェスチャレコグナイザ（Ｐ）及びコミットジェスチャレコグナイザ（Ｃ）は失敗した状態に遷移し、パンジェスチャレコグナイザ（Ｓ）は変更された状態に遷移する。一部の実施形態では、変更された状態へのパンジェスチャレコグナイザ（Ｓ）の遷移は、ユーザインターフェース７０６又はユーザインターフェース７０６の少なくとも一部のスクロールを引き起こすか又は可能にするものである。
【０２２２】
図７Ｒは図７Ｈに対応しているが、タップジェスチャレコグナイザ（Ｔ）の代わりにパンジェスチャレコグナイザ（Ｓ）を備える。図７Ｒでは、パンジェスチャレコグナイザ（Ｓ）は、タッチ感知面とのその最初の接触以降の入力の移動の不足、及び、開始された状態（図７Ｇを参照）又は変更された状態（図７Ｈ及び図７Ｒを参照）へのプレビュージェスチャレコグナイザ（Ｐ）の遷移に起因して、失敗した状態にある。フォーカスセレクタ７０７の上方の矢印は、入力が、この実施例では矢印が表す上向きの方向に、移動を開始したことを示す。
【０２２３】
更に、図７Ｒでは、入力が第２の強度閾値ＩＭを満足することを含む強度入力基準を入力が満足すること、及び結果として、プレビュージェスチャレコグナイザ（Ｐ）が開始された状態（図７Ｇを参照）又は変更された状態（図７Ｈ及び図７Ｒを参照）に遷移していることが留意される。
【０２２４】
入力及びその対応するフォーカスセレクタ７０７の、図７Ｒに示す位置から図７Ｓに示す位置への移動を示す、図７Ｓ。ここでの検討の目的のためタッチ感知面にわたる所定の距離を超える移動と仮定され得る、この入力の移動にも関わらず、リビールジェスチャレコグナイザ（Ｒ）及びプレビュージェスチャレコグナイザ（Ｐ）は変更された状態に留まり、コミットジェスチャレコグナイザ（Ｃ）は可能状態に留まり、パンジェスチャレコグナイザ（Ｓ）は失敗した状態に留まる。一部の実施形態では、パンジェスチャレコグナイザ（Ｓ）が失敗した状態に留まる理由は、ジェスチャレコグナイザは失敗した状態に遷移してしまうと、ユーザ入力が終了するまで（すなわち、ユーザが自身の指又はスタイラス又は他の器具をタッチ感知面から持ち上げるまで）、認識された状態又は開始された状態などの他のいずれの状態にも遷移できないからである。
【０２２５】
一部の実施形態では、プレビュー領域７１２を表示することと連動して（例えば、プレビュー領域７１２を表示することに応じて）、プレビュー領域７１２に関して、（新しい）第２のパンジェスチャレコグナイザが開始される。このため、かかる実施形態では、パンジェスチャレコグナイザ（Ｓ）は失敗した状態にあるものの、プレビュー領域７１２はパンジェスチャに応答する（例えば、プレビュー領域７１２は、第２のパンジェスチャレコグナイザを使用して、プレビュー領域７１２がディスプレイ６５０にわたって移動される間メールアプリケーションユーザインターフェース７０６が不動のままとなるように、メールアプリケーションユーザインターフェース７０６から独立的に、パンジェスチャに従ってディスプレイ６５０にわたって移動されるが、これは、図７Ｏ〜図７Ｐに示すようなパンジェスチャレコグナイザ（Ｓ）に関連付けられたスクロール動作とは異なっている）。
【０２２６】
図７Ｔは、タップジェスチャレコグナイザ（Ｔ）が長い押圧ジェスチャレコグナイザ（Ｌ）で置き換えられていること、及びフォーカスセレクタ７０９によってフォーカスセレクタ７０５が置き換わっていることを除いて、図７Ａと同様である。フォーカスセレクタ７０９に対応する入力の強度は、第１の強度閾値ＩＬを満足せず（例えば、これを下回っており）、また、タッチ感知面との入力の最初の接触以降に経過した時間の量は、時間７１１６に対応する第１の所定の時間期間よりも少ない。
【０２２７】
図７Ｕは、入力が、時間７１１６に対応する第１の所定の時間期間の間、タッチ感知面と接触したままであり、かつ第１の強度閾値ＩＬを満足しない（例えば、これを下回っている）強度のままであることを示す。一部の実施形態では、図７Ｕに示すように、第１の所定の時間期間中の間入力が第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、長い押圧ジェスチャレコグナイザは開始された状態に遷移し、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、及びコミットジェスチャレコグナイザ（Ｃ）は、失敗した状態に遷移する。
【０２２８】
更に、一部の実施形態では、図７Ｕに示すように、第１の所定の時間期間の間入力が第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作が実行される。図７Ｕに示す例では、第２の動作は、フォーカスセレクタ７０９の現在の位置に対応するオブジェクト７０８に関係する項目のメニュー７１６を表示することを含む。
【０２２９】
図７Ｖは、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間に入力が第１の強度閾値（例えば、ＩＬ）を満足することを含む強度入力基準を満足する入力に応答した、図７Ｔに示す図からのユーザインターフェース７０６の変化を示す。図７Ｖに示すように、入力の強度は、第１の強度閾値ＩＬを上回って増大している。応じて、リビールジェスチャレコグナイザ（Ｒ）は、図７Ｔに示すような可能状態から、図７Ｖに示すような開始された状態に遷移する。一部の実施形態では、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足することに応じて、第１の動作が実行される。この実施例では、第１の動作は、ユーザ入力の位置に対応する不鮮明にされていないユーザインターフェースオブジェクト７０８を除いて、ユーザインターフェース７０６を不鮮明にすること又はユーザインターフェース７０６を不鮮明な状態に遷移させることを含む。
【０２３０】
図７Ｗは、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間入力が第２の強度閾値（例えば、ＩＭ）未満に留まることを含む強度入力基準を満足する入力に応答した、図７Ｖに示す図からのユーザインターフェース７０６の変化を示す。一部の実施形態では、第１の所定の時間期間の間入力が第２の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作が実行される。図７Ｗに示す例では、第２の動作は、フォーカスセレクタ７０９の現在の位置に対応するオブジェクト７０８に関係する項目のメニュー７１６を表示することを含む。
【０２３１】
図７Ｘは、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間に入力が第２の強度閾値（例えば、ＩＭ）を満足することを含む強度入力基準を満足する入力に応答した、図７Ｖに示す図からのユーザインターフェース７０６の変化を示す。一部の実施形態では、第１の所定の時間期間の間に入力が第２の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第３の動作が実行される。図７Ｘに示す実施例では、第３の動作は、フォーカスセレクタ７０９が上に位置付けられるユーザインターフェースオブジェクト７０８に対応する情報の、プレビュー７１２を表示することである。更に、一部の実施形態では、第１の所定の時間期間の間に入力が第２の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、プレビュージェスチャレコグナイザ（Ｐ）は開始された状態に遷移し、長い押圧ジェスチャレコグナイザ（Ｌ）は失敗した状態に遷移する。一部の実施形態では、プレビュージェスチャレコグナイザ（Ｐ）の開始された状態への遷移が、長い押圧ジェスチャレコグナイザ（Ｌ）の失敗した状態への遷移を引き起こす。
【０２３２】
図７Ｙは、長い押圧ジェスチャレコグナイザが失敗した状態に既に遷移し、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間入力が第１の（又は第２の）強度閾値を満足し続けた後の、ユーザインターフェース７０６を示す。
【０２３３】
第１の所定の時間期間を通した入力の継続にも関わらず、長い押圧ジェスチャレコグナイザ（Ｌ）は失敗した状態に留まる。更に、この実施例では、リビールジェスチャレコグナイザ（Ｒ）は変更された状態に留まり、プレビュージェスチャレコグナイザ（Ｐ）は変更された状態に遷移し、コミットジェスチャレコグナイザ（Ｃ）は可能状態に留まる。一部の実施形態では、長い押圧ジェスチャレコグナイザ（Ｌ）が失敗した状態に留まる理由は、ジェスチャレコグナイザは失敗した状態に遷移してしまうと、ユーザ入力が終了するまで（すなわち、ユーザが自身の指又はスタイラス又は他の器具をタッチ感知面から持ち上げるまで）、認識された状態又は開始された状態などの他のいずれの状態にも遷移できないからである。
【０２３４】
図７Ｚは、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間に第１の強度閾値を満足することがなく、かつ第１の所定の時間期間の間タッチ感知面上に留まるのをやめる入力に応答した、図７Ｔに示す図からのユーザインターフェース７０６の変化を示す。第１の所定の時間期間の間第１の強度閾値を満足することがなくかつ第１の所定の時間期間の間タッチ感知面上に留まるのをやめる入力に応じて、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及び長い押圧ジェスチャレコグナイザ（Ｌ）はすべて、失敗した状態に遷移する。
【０２３５】
図７ＡＡは、パンジェスチャレコグナイザ（Ｓ）が長い押圧ジェスチャレコグナイザ（Ｌ）で置き換えられていること、及びフォーカスセレクタ７０７がフォーカスセレクタ７０９で置き換えられていることを除いて、図７Ｌに示す図と同様の、ユーザインターフェース７０６の図を示す。図７ＡＡは、図７Ｌと同様に、フォーカスセレクタ７０９を取り囲む点線の円又は他の形状として示される、入力移動限界区域又は入力移動限界外周７１４を示す。典型的には、入力移動限界外周７１４は実際には表示されず、代わりに、入力移動限界外周７１４は、ジェスチャレコグナイザのうちの１つ以上が利用する入力移動限界を表す。
【０２３６】
図７ＢＢは、図７ＡＡに示す図からの、ユーザインターフェース７０６の変化を示す。フォーカスセレクタ７０９に対応する入力が、図７ＡＡに示す位置から図７ＢＢに示す位置に移動するとき、入力はタッチ感知面にわたって少なくとも所定の距離だけ移動しており、このことが、フォーカスセレクタ７０９が、入力移動限界外周７１４を少なくとも部分的に越えて移動していることによって反映されている。結果として、グラフィカルユーザインターフェース７０６は、タッチ感知面上の入力が移動した距離に対応する量だけ、パン又はスクロールする。より一般的には、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動することに応じて、第２の動作が実行される。一部の実施形態では、第２の動作は、ユーザインターフェースの少なくとも一部をスクロールすることを含む。
【０２３７】
更に、図７ＡＡに示すように、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動することに応じて、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及び長い押圧ジェスチャレコグナイザ（Ｌ）はすべて、失敗した状態にする。
【０２３８】
図７ＣＣは、図７ＢＢに示す図からの、ユーザインターフェース７０６の変化を示す。図７ＣＣでは、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及び長い押圧ジェスチャレコグナイザ（Ｌ）がすべて失敗した状態に遷移した後で、入力の強度は、強度プロファイル７１１８が示すように、増大して第１の所定の閾値ＩＬを若しくは第１の所定の閾値ＩＭさえも満足するか、又は、入力は、強度プロファイル７１２０が示すように、第１の所定の時間期間（例えば、時間７１１６で終わる時間期間）の間、タッチ感知スクリーンと接触しているが第１の強度閾値を下回ったままである。いずれの状況においても、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及び長い押圧ジェスチャレコグナイザ（Ｌ）はすべて、失敗した状態に留まる。一部の実施形態では、リビールジェスチャレコグナイザ（Ｒ）、プレビュージェスチャレコグナイザ（Ｐ）、コミットジェスチャレコグナイザ（Ｃ）、及び長い押圧ジェスチャレコグナイザ（Ｌ）がすべて失敗した状態に留まる理由は、ジェスチャレコグナイザは失敗した状態に遷移してしまうと、ユーザ入力が終了するまで（すなわち、ユーザが自身の指又はスタイラス又は他の器具をタッチ感知面から持ち上げるまで）、認識された状態又は開始された状態などの他のいずれの状態にも遷移できないからである。
【０２３９】
図７ＤＤは、パンジェスチャレコグナイザ（Ｓ）がタップジェスチャレコグナイザ（Ｔ）で置き換えられていること、及びフォーカスセレクタ７１１が電子メールアドレス７１８上に配置されていることを除いて、図７Ｔに示す図と同様の、ユーザインターフェース７０６の図を示す。長い押圧ジェスチャレコグナイザ（Ｌ）がパンジェスチャレコグナイザ（Ｓ）を伴わずに使用される（例えば、長い押圧ジェスチャレコグナイザ（Ｌ）が電子メールアドレスに関連付けられた唯一のジェスチャレコグナイザであるか、又は、長い押圧ジェスチャレコグナイザ（Ｌ）及びパンジェスチャレコグナイザ（Ｓ）以外の１つ以上の他のジェスチャレコグナイザが、電子メールアドレスに関連付けられている）とき、長い押圧ジェスチャレコグナイザ（Ｌ）が開始された状態などの別の状態に遷移すべきであるか否かを判定する際に、時間７１１６で終わる時間期間の代わりに、時間７１２２で終わる時間期間が使用される。
【０２４０】
図７ＥＥでは、時間７１２２で終わる時間期間中に入力がタッチ感知面上に留まるとの判定に従って、時間７１１６で終わる時間期間の全持続時間の間入力がタッチ感知面上に留まるか否かに関係なく、オブジェクト７１８に関係する項目のメニュー７１６を表示する所定の動作が実行される。
【０２４１】
図７ＦＦは、フォーカスセレクタ７１３の強度７２０４が検出され、アプリケーション非依存モジュール２２０に送信されることを示す。強度７２０４の受信に応じて、アプリケーション非依存モジュール７２２０は、１つ以上のイベントオブジェクト１９４を、アプリケーション専用モジュール２３０に送信する。
【０２４２】
イベントオブジェクト１９４は、検出された強度７２０４に基づく特性強度７２０６を含む。一部の実施形態では、イベントオブジェクト１９０４は基準強度７２０８を含む。例えば、一部の実施形態では、特性強度７２０６は、検出された強度７２０４を基準強度７２０８で除算したものに相当する、正規化された強度値である。一部の実施形態では、基準強度７２０８は、１つ以上の強度センサによって検出可能な最大強度に相当する。一部の実施形態では、基準強度７２０８は、検出された強度７２０４を正規化するための所定の強度レベルである。特性強度７２０６は典型的には、０〜１の範囲を有する。アプリケーション専用モジュール２３０は検出された強度７２０４の代わりに特性強度７２０６を受信するので、アプリケーション専用モジュール２３０は、強度センサ間のばらつきから独立した強度情報を受信し、これに応答するように構成される。このため、アプリケーション専用モジュール２３０は、強度センサ間のばらつきを処理する命令を含む必要がなく、したがって、アプリケーション専用モジュール２３０のサイズが低減され、アプリケーション専用モジュール２３０の性能が改善される。
【０２４３】
一部の実施形態では、感度７２１０が設定されるとき、特性強度７２０６に感度値７２１０を乗算する。一部の実施形態では、感度７２１０は、１のデフォルト値を有する。しかしながら、例えば感度７２１０が２の値を有するときは、特性強度７２０６は２倍となる。
【０２４４】
図７ＧＧでは、例示的な設定ユーザインターフェースが、ディスプレイ６５０上に示されている。図７ＧＧに示す設定ユーザインターフェースは、複数の強度設定（例えば、低い、中間の、及び高い強度設定）を有する領域７２０を含む。図７ＧＧのユーザ入力強度のグラフ７０２は、検出された強度７３０２に従う特性強度７３０４が、低い感度設定が選択されるときに使用されることを示す。強度値の比較を容易にするために、図７ＧＧのユーザ入力強度のグラフ７０２に関しては、１の基準強度が使用される。中間の設定が選択されるとき、特性強度７３０４よりも高い強度値を有する（例えば、特性強度７３０６は特性強度７３０４の２倍である）特性強度７３０６が使用され、また、高い設定が選択されるとき、特性強度７３０６よりも高い強度値を有する（例えば、特性強度７３０８は特性強度７３０４の３倍である）特性強度７３０８が使用される。
【０２４５】
図７ＨＨは、設定ユーザインターフェースが複数の強度設定オプション（例えば、４つ以上のレベルの強度設定オプション）を有する領域７２２を含むことを除いて、図７ＧＧと同様である。４つ以上のレベルの強度設定オプションが存在するが、図７ＨＨのユーザ入力強度のグラフ７０２は、ユーザ入力強度のグラフ７０２の理解を曖昧にしないように、３つのレベルの特性強度線（例えば、７３０４、７３０６、及び７３０８）を示す。
【０２４６】
図７ＩＩは、複数のフォーカスセレクタ（例えば、７１５及び７１７）が現在検出されており、それぞれのフォーカスセレクタの強度が個別に判定されることを示す。アプリケーション非依存モジュール２２０は、フォーカスセレクタ７１５の強度７２０４及びフォーカスセレクタ７１７の強度７２１２を受信し、それぞれのイベントオブジェクト１９４及び７１９４を、アプリケーション専用モジュール２３０に送信する。イベントオブジェクト１９４はフォーカスセレクタ７１５に対応し、フォーカスセレクタ７１５の特性強度７２０６並びに基準強度７２０８を含む。同じ基準強度７２０８が、複数のタッチの強度を正規化するために使用される。このため、フォーカスセレクタ７１７に対応するイベントオブジェクト７１９４もまた、同じ基準強度７２０８、並びにイベントオブジェクト１９４中のフォーカスセレクタ７１７の特性強度７２１４を含む。
【０２４７】
図７ＪＪは、メールアプリケーションユーザインターフェース７０６上のフォーカスセレクタ７１５及び７１７によるデピンチジェスチャを示す。図７ＪＪでは、ジェスチャレコグナイザのための状態機械７０４は、メールアプリケーションユーザインターフェース７０６が、２つのピンチジェスチャレコグナイザ、すなわち、（例えば、図１Ａの電子メールクライアントモジュール１４０によって）第１の強度閾値（例えば、Ｉ１）が指定される、第１のピンチジェスチャレコグナイザ（Ｎ１）、及び、（例えば、図１Ａの電子メールクライアントモジュール１４０によって）強度閾値が指定されない、第２のピンチジェスチャレコグナイザ（Ｎ２）に関連付けられることを示す。
【０２４８】
図７ＫＫのユーザ入力強度のグラフ７０２は、フォーカスセレクタ７１５及び７１７によるピンチ又はデピンチジェスチャが、強度閾値Ｉ１を満足することを示す。応じて、第１のピンチジェスチャレコグナイザ（Ｎ１）は認識された状態に遷移し、対応する動作（例えば、メールアプリケーションユーザインターフェース７２４を表示すること、受信箱ビューを示すこと）が実行される。更には、第２のピンチジェスチャレコグナイザ（Ｎ２）は、（例えば、第１のピンチジェスチャレコグナイザ（Ｎ１）が認識された状態に遷移したために）失敗した状態に遷移する。
【０２４９】
図７ＬＬのユーザ入力強度のグラフ７０２は、フォーカスセレクタ７１５及び７１７によるピンチ又はデピンチジェスチャが、強度閾値Ｉ１を満足しない場合を示す。応じて、第２のピンチジェスチャレコグナイザ（Ｎ２）は認識された状態に遷移し、対応する動作（例えば、ズームインビューを表示すること）が実行される。更には、第１のピンチジェスチャレコグナイザ（Ｎ１）は、（例えば、第２のピンチジェスチャレコグナイザ（Ｎ２）が認識された状態に遷移したために）失敗した状態に遷移する。
【０２５０】
図７ＭＭでは、状態機械７０４は、メールアプリケーションユーザインターフェース７０６が、２つのピンチジェスチャレコグナイザ（Ｎ１）及び（Ｎ２）、並びに、（例えば、図１Ａの電子メールクライアントモジュール１４０によって）第２の強度閾値（例えば、Ｉ２）が指定される、２指パンジェスチャレコグナイザ（２Ｓ）に関連付けられていることを示す。図７ＭＭはまた、メールアプリケーションユーザインターフェース７０６上の、フォーカスセレクタ７１９及び７２１による２指パンジェスチャも示す。
【０２５１】
図７ＮＮのユーザ入力強度の図７０２は、２指パンジェスチャが第２の強度閾値を満足することを示す。２指パンジェスチャレコグナイザ（２Ｓ）は開始された状態に遷移し、対応する動作（例えば、メールアプリケーションユーザインターフェース７０６上にリンクされたウェブサイトのレビューを示すレビューウィンドウ７２６を重ねること）が実行される。第１のピンチジェスチャレコグナイザ（Ｎ１）及び第２のピンチジェスチャレコグナイザ（Ｎ２）は、（例えば、２指パンジェスチャレコグナイザ（２Ｓ）が認識された状態に遷移したために）失敗した状態に遷移する。
【０２５２】
図７ＯＯは、ブラウザアプリケーションユーザインターフェース７１０、並びに、ブラウザアプリケーションユーザインターフェース７１０のアドレスウィンドウ上の、フォーカスセレクタ７２３及び７２５によるデピンチジェスチャを示す。図７ＯＯのジェスチャレコグナイザのための状態機械７０４は、ブラウザアプリケーションユーザインターフェース７１０のアドレスウィンドウが、（例えば、図１Ａのブラウザモジュール１４７により）第３の強度閾値（例えば、Ｉ３）が指定される、第３のピンチジェスチャレコグナイザ（Ｎ３）に関連付けられていることを示す。図７ＯＯのユーザ入力強度のグラフ７０２は、フォーカスセレクタ７２３及び７２５の強度が第３の強度閾値Ｉ３を満足し、第３のピンチジェスチャレコグナイザ（Ｎ３）が開始された状態に遷移していることを示す。第１のピンチジェスチャレコグナイザ（Ｎ１）及び第２のピンチジェスチャレコグナイザ（Ｎ２）は可能状態に留まるが、その理由は、第３のピンチジェスチャレコグナイザ（Ｎ３）が、第１のピンチジェスチャレコグナイザ（Ｎ１）及び第２のピンチジェスチャレコグナイザ（Ｎ２）に対応するビューに関連付けられていないからである。
【０２５３】
図７ＰＰは、フォーカスセレクタ７２３及び７２５が検出されなくなることを示す。ただし、フォーカスセレクタ７２３及び７２５が第３の強度閾値Ｉ３を満足しているので、第３のピンチジェスチャレコグナイザ（Ｎ３）は認識された状態に遷移し、対応する動作（例えば、タブ管理ビュー７２８を表示すること）が実行される。
【０２５４】
図７ＱＱのユーザ入力強度のグラフ７０２は、フォーカスセレクタ７２３及び７２５の強度が、第３の強度閾値（例えば、Ｉ３）を満足しない場合を示す。この場合、第３のピンチジェスチャレコグナイザ（Ｎ３）は失敗した状態に遷移し、第３のピンチジェスチャレコグナイザに関連付けられたアクションは何も実行されない（例えば、図７ＰＰに示すタブ管理ビュー７２８は表示されない）。
【０２５５】
図７ＲＲは、メールアプリケーションユーザインターフェース７０６のユーザインターフェースオブジェクト７０８の上にあるフォーカスセレクタ７２７を示す。
【０２５６】
図７ＲＲのユーザ入力強度のグラフ７０２は、第１のタイミング基準（例えば、入力は時間７１２４で終わる期間の間タッチ感知面上に留まる必要がある）、及び第１の強度入力基準（例えば、入力は時間７１２４において又はそれ以降に、強度閾値ＩＬを満足する必要がある）を示し、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること、又は別法として、プレビューウィンドウを表示すること）を実行するためには、これらの両方を満足する必要がある。
【０２５７】
図７ＲＲでは、強度パターン７１２６に従う入力は、（入力が少なくとも時間７１２４で終わる時間期間の間留まり続けるので）第１のタイミング基準を、及び（入力が時間７１２４において強度閾値ＩＬを満足するので）第１の強度入力基準を、いずれも満足する。したがって、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）は、時間７１２４において実行される。
【０２５８】
強度パターン７１２８に従う入力は、（入力が少なくとも時間７１２４で終わる時間期間の間留まり続けるので）第１のタイミング基準を、及び（入力の強度が増大し時間７１２４の後で強度閾値ＩＬを満足するので）第１の強度入力基準を、いずれも満足する。したがって、入力の強度が強度閾値ＩＬを満足するとき、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）が実行される。
【０２５９】
強度パターン７１３０に従う入力は、入力の強度がいずれの時間においても強度閾値ＩＬを満足しないので、第１の強度入力基準を満足しない。（入力が少なくとも時間７１２４で終わる期間の間タッチ感知面上に留まるので）第１のタイミング基準は満足されるが、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）は実行されない。
【０２６０】
強度パターン７１３１又は強度パターン７１３２に従う入力に関して、その入力は強度閾値ＩＬを満足するが、この入力は、入力の強度が時間７１２４において又はその後で強度閾値ＩＬを満足しないので、第１の強度入力基準を満足しない。入力が少なくとも時間７１２４で終わる期間の間タッチ感知面上に留まらないので、第１のタイミング基準は満足されない。したがって、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）は実行されない。
【０２６１】
一部の実施形態では、強度パターン７１３２に従う入力は時間７１３４の前に解放されるので、異なる動作がユーザインターフェースオブジェクト７０８に関連付けられている場合に、その異なる動作（例えば、タップジェスチャ動作）が実行される。しかしながら、強度パターン７１３１に従う入力は時間７１３４の後で解放され、タップジェスチャ動作は強度パターン７１３１に従う入力に応じては実行されない。一部の実施形態では、時間７１３４は図７Ｂに示す時間７００２に対応する。
【０２６２】
図７ＳＳは、少なくとも部分的にぼやけさせられるか又は不鮮明にされる、メールアプリケーションユーザインターフェース７０６を示す。一部の実施形態では、部分的にぼやけさせるか又は不鮮明にすることにより、入力の強度の更なる増大によりプレビューウィンドウの表示が開始されることを示す、視覚的な手がかりが提供される。
【０２６３】
図７ＴＴのユーザ入力強度のグラフ７０２は、第２のタイミング基準（例えば、入力は時間７１３６で終わる期間の間タッチ感知面上に留まる必要がある）、及び第２の強度入力基準（例えば、入力は時間７１３６において又はそれ以降に、強度閾値ＩＭを満足する必要がある）を示し、第２の所定の動作（例えば、プレビューウィンドウを表示すること）を実行するためには、これらの両方を満足する必要がある。一部の実施形態では、時間７１３６は、図７ＴＴに示す時間７１２４とは異なる。一部の実施形態では、時間７１３６及び時間７１２４は同一である。
【０２６４】
強度パターン７１２８に従う入力は、（入力が少なくとも時間７１３６で終わる時間期間の間タッチ感知面上に留まるので）第２のタイミング基準を、及び（入力の強度が増大し時間７１３６の後で強度閾値ＩＭを満足するので）第２の強度入力基準を、いずれも満足する。したがって、入力の強度が強度閾値ＩＭを満足するとき、第２の所定の動作（例えば、プレビューウィンドウ７１２を表示すること）が実行される。
【０２６５】
強度パターン７１３８に従う入力は、（入力が少なくとも時間７１３６で終わる時間期間の間タッチ感知面上に留まるので）第２のタイミング基準を、及び（入力が時間７１３６において強度閾値ＩＭを満足するので）第２の強度入力基準を、いずれも満足する。したがって、第２の所定の動作（例えば、プレビューウィンドウ７１２を表示すること）は、時間７１３６において実行される。
【０２６６】
しかしながら、強度パターン７１４０に従う入力は、入力がいずれの時間においても強度閾値ＩＭを満足しないので、第２の強度入力基準を満足しない。入力は第２のタイミング基準（例えば、入力が時間７１３６で終わる時間期間の間タッチ感知面上に留まる）を満足するが、第２の強度入力基準が満足されないので、第２の所定の動作（例えば、プレビューウィンドウ７１２を表示すること）は実行されない。
【０２６７】
強度パターン７１４２に従う入力は、第２の強度入力基準を満足しない。入力の強度は強度閾値ＩＭを一時的に満足するが、この入力の強度は時間７１３６の前に強度閾値ＩＭを下回って減少する。入力は時間７１３６において又はそれ以降に強度閾値ＩＭを満足しないので、第２の強度入力基準は満足されていない。入力は第２のタイミング基準（例えば、入力が時間７１３６で終わる時間期間の間タッチ感知面上に留まる）を満足するが、第２の強度入力基準が満足されないので、第２の所定の動作（例えば、プレビューウィンドウ７１２を表示すること）は実行されない。
【０２６８】
図７ＵＵのユーザ入力強度のグラフ７０２は、一部の実施形態では、入力の強度が基準強度ＩＲを下回って減少するとき、タイミング基準がリセットされる（例えば、最初の接触が検出されるときから時間期間を開始する代わりに、入力の強度が基準強度を下回って減少するときから時間期間が再開される）ことを示す。例えば、図７ＵＵでは、入力が時間７１２４で終わる時間期間の間タッチ感知面上に留まり、入力の強度は時間７１２４において強度閾値ＩＬを満足する。しかしながら、入力の強度が時間７１４６において基準強度ＩＲを下回って下降するときに第１のタイミング基準がリセットされるので、第１の所定の動作は時間７１２４において実行されない。第１のタイミング基準は、入力が時間７１４８で終わる時間期間ｐ１の間タッチ感知面上に留まった後で満足され、第１の強度入力基準は、入力が時間７１４８において強度閾値ＩＬを満足するので、時間７１４８において満足される。したがって、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）は、時間７１４８において実行される。
【０２６９】
一部の実施形態では、基準強度ＩＲは、入力の代表的な強度（例えば、ピーク強度）及び強度マージンＩｍａｒｇｉｎを使用することによって判定される。例えば、基準強度は、入力の代表的な強度（例えば、ピーク強度）を下回る強度マージンＩｍａｒｇｉｎに相当する。
【０２７０】
図７ＶＶのユーザ入力強度のグラフ７０２は、入力の強度が、入力の代表的な強度（例えば、ピーク強度）を下回る強度マージンＩｍａｒｇｉｎに相当する、第１の基準強度ＩＲ１を下回って減少することを示す。一部の実施形態では、入力の強度が第１の基準強度ＩＲ１を下回って減少するとき、第１のタイミング基準がリセットされ、新しい（第２の）基準強度ＩＲ２が、この第２の基準強度ＩＲ２が第１の基準強度ＩＲ１を下回る強度マージンＩｍａｒｇｉｎに相当するように決定される。入力の強度が時間７１５０において第２の基準強度ＩＲ２を更に下回って減少するとき、第１のタイミング基準は再びリセットされ、第１の時間期間ｐ１は時間７１５２において終了する。入力が時間７１５２における第１の時間期間ｐ１の終了までタッチ感知面上に留まるので、第１のタイミング基準は満足され、入力が時間７１５２における第１の時間期間ｐ１の終了において強度閾値ＩＬを満足するので、第１の強度入力基準は満足される。したがって、第１の所定の動作（例えば、プレビューウィンドウの表示が差し迫っていることを示唆するためにユーザインターフェースの少なくとも一部をぼやけさせるか又は不鮮明にすること）は、時間７１５２において実行される。
【０２７１】
図７ＵＵ及び図７ＶＶは、第１のタイミング基準をリセットすることを示すが、一部の実施形態では、第２のタイミング基準が同様の様式でリセットされる。簡潔にするために、そのような詳細はここでは省略する。
【０２７２】
図７ＷＷは、メールアプリケーションユーザインターフェース７０６のユーザインターフェースオブジェクト７０８の上にあるフォーカスセレクタ７２９を示す。
【０２７３】
図７ＷＷのユーザ入力強度のグラフ７０２は、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）に関する、第１の強度閾値成分７１５４を示す。第１の強度閾値成分７１５４は、最初は高い値ＩＨを有し、経時的に減衰するが、これにより、最初の時間期間の間に予想外に強い入力で所定の動作が直ちに実行される可能性が低減される。しかしながら、これにより所定の動作が完全に防止されるわけではない。入力が十分な強度を有する場合、その入力は依然として第１の強度閾値成分７１５４を満足し、所定の動作を開始する可能性がある。第１の強度閾値成分７１５４を経時的に減衰（例えば、減少）させることによって、入力がしばらくの間タッチ感知面上に留まった後での所定の動作の実行が、より容易になる。
【０２７４】
図７ＷＷでは、強度パターン７１５６に従う入力は第１の強度閾値成分７１５４を満足し、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）の実行を開始する。
【０２７５】
強度パターン７１５８に従う入力（例えば、短く強いタップジェスチャ）は第１の強度閾値成分７１５４を満足しないが、この理由は、入力の強度が急激に降下し、第１の強度閾値成分７１５４が減衰を開始する前に入力が解放されるからである。
【０２７６】
一部の実施形態では、第１の強度閾値成分７１５４は、入力の最初の検出から間を置かずに減衰し始める。一部の実施形態では、第１の強度閾値成分７１５４は、図７ＷＷに示すように、入力の最初の検出から所定の時間間隔ｐ３後に減衰し始める。
【０２７７】
図７ＸＸのユーザ入力強度のグラフ７０２は、入力の強度が時間７１６２において基準強度ＩＲを下回って降下するとき、第１の強度閾値成分７１６４は、所定の時間間隔ｐ３が経過する前であっても、時間７１６２において減衰を開始することを示す。したがって、図７ＸＸでは、強度パターン７１６０に従う入力は第１の強度閾値成分７１６４を満足し、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）が実行される。
【０２７８】
図７ＹＹは、（図７ＷＷに関して上記した）第１の強度閾値成分７１５４と第２の強度閾値成分７１６８の和である、アクティブ化強度閾値７１７０を示す。図７ＹＹに示すように、第２の強度閾値成分７１６８は、入力７１６６の強度に遅れて従う。第２の強度閾値成分７１６８は、入力７１６６の強度の経時的な軽微な揺らぎに起因する、所定の動作の意図しないトリガを低減する。例えば、入力７１６６の強度の漸進的な変化により所定の動作がトリガされる可能性は低くなる。図７ＹＹでは、入力７１６６は時間７１６７においてアクティブ化強度閾値７１７０を満足し、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）が時間７１６７において実行される。
【０２７９】
図７ＺＺは、アクティブ化強度閾値７１７４の第１の強度閾値成分が時間７１７６において減衰し始めることを除いて（図７ＹＹの）アクティブ化強度閾値７１７０と同様である、アクティブ化強度閾値７１７４を示し、時間７１７６は、第１の及び第２の所定の動作が実行される時間７１２４の後の所定の時間間隔ｐ３に相当する。図７ＺＺでは、入力７１７２は時間７１７３においてアクティブ化強度閾値７１７４を満足し、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）が時間７１７３において実行される。
【０２８０】
図７ＡＡＡは、経時的に減衰するアクティブ化強度閾値７１８０を示し、このとき入力７１７８は、強度閾値ＩＭを満足する（及び、第２の所定の動作が実行される）。入力の強度７１７８は強度閾値ＩＭ及びＩＬを下回って減少するが、一部の実施形態では、このことにより第２の所定の動作が取り消されることはないアクティブ化強度閾値７１８０が経時的に著しく減衰しているので、アクティブ化強度閾値７１８０が強度閾値ＩＭを下回っていても、入力の強度７１７８の増大により、時間７１７９においてアクティブ化強度閾値７１８０が満足される。
【０２８１】
図７ＢＢＢは、図７ＡＡＡに示す、同じアクティブ化強度閾値７１８０及び入力７１７８を示す。図７ＢＢＢはまた、アクティブ化強度閾値７１８０がベースライン閾値７１８２を下回って降下しないことも示し、このことにより、所定の動作（例えば、メールアプリケーションユーザインターフェース７０６の表示をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）の意図しないトリガが低減される。
【０２８２】
図８Ａ〜図８Ｅは、一部の実施形態による、長い押圧入力及び深い押圧入力の曖昧さを除去する方法８００を示すフロー図である。方法８００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である（例えば、タッチ感知面はトラックパッドである）。方法８００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０２８３】
後述するように、方法８００は、タッチ入力を命令で処理するための高度な方式を提供する。方法８００は、タッチ入力を処理する際の効率を改善する。
【０２８４】
デバイスは、第１のユーザインターフェースを表示する（８０２）。第１のユーザインターフェースの表示中に、デバイスはタッチ感知面上の入力を検出する（８０４）。第１のユーザインターフェース及びタッチ感知面上の入力への応答の実施例が、図７Ｔ〜図７ＣＣを参照して上記されている。一部の実施形態では、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、入力はフォーカスセレクタ（例えば、フォーカスセレクタ７０９、図７Ｔ）が複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクト（例えば、オブジェクト７０８、図７Ｔ）の上にある間に検出され、第１のユーザインターフェースオブジェクトは、少なくとも第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、長い押圧ジェスチャレコグナイザ）に関連付けられている。
【０２８５】
第１のユーザインターフェースの表示中に入力の検出に応じて（８０８）、デバイスは、第１の所定の時間期間の間に入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作（例えば、図７Ｄ及び図７Ｖに示すように、ユーザインターフェースを不鮮明にすること）を実行する（８１０）。他方で、第１のユーザインターフェースの表示中に入力を検出することに応じて（８０８）、デバイスは、第１の所定の時間期間の間入力が第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作（例えば、メニュー又はメニュービュー７１６を表示すること、図７Ｕ）を実行する（８１２）。上述のように、一部の実施形態では、第２の動作は、メニュー又はメニュービュー（例えば、メニュービュー７１６、図７Ｕ）を表示することを含む（８３０）。
【０２８６】
一部の実施形態では、強度入力基準は、入力が（タッチ感知面と接触したままである間に）タッチ感知面にわたって（例えば、図７Ｌ〜図７Ｑ及び図７ＡＡ〜図７ＣＣの入力移動限界外周７１４を参照して上で検討したように）所定の距離を超えて移動しないことを含み（８４０）、また、長い押圧基準は、入力における接触がタッチ感知面にわたって所定の距離を超えて移動しないことを含む（８４２）。
【０２８７】
一部の実施形態では、方法８００は、入力が強度入力基準を満足せずかつ長い押圧基準を満足しないとの判定に従って、第１の動作及び第２の動作を取り止める（８１４）ことを含む。
【０２８８】
一部の実施形態では、タッチ感知面上の入力を検出すること（８０４）は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分を検出すること（８０６、８５０）を含む。更に、一部のかかる実施形態では、方法８００は、タッチ感知面上の入力の第１の部分を検出すること（例えば、タッチ感知面との入力の最初の接触を検出すること）に応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別することであって、ジェスチャレコグナイザの第１のセットは第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、長い押圧ジェスチャレコグナイザ）を含む、識別すること（８５２）を含む。
【０２８９】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）を用いて入力を処理することを含む、第１の動作を実行する（８５４）。一部の実施形態では、第１の強度閾値（例えば、図７ＴのＩＭ）は、入力検出強度閾値（例えば、図７ＴのＩＬ）とは異なる。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャを認識しないとの判定も必要とする。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗したとの（すなわち、図７Ｘ及び図７Ｙを参照して上で検討したように、第２のジェスチャレコグナイザが失敗した状態に遷移したとの）判定も必要とする。
【０２９０】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力が長い押圧基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて（例えば、長い押圧ジェスチャレコグナイザ（Ｌ）、図７Ｔ〜図７Ｕ、を用いて）入力を処理することを含む、第２の動作を実行する（８５４）。一部の実施形態では、第２のジェスチャレコグナイザを用いて入力を処理することはまた、第１のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗した（例えば、１つ以上のセンサによって検出された入力の強度が、所定の時間期間の間に第１の強度閾値を満足しない）との判定も必要とする。図７Ｕに関して上で検討した実施例では、プレビュージェスチャレコグナイザは、１つ以上のセンサによって検出された入力の強度が所定の時間期間（例えば、時間７１１６で終わる時間期間、図７Ｕ）の間に第１の強度閾値（例えば、ＩＭ、図７Ｕ）を満足しないとのデバイスによる判定に従って、失敗した状態に遷移している。
【０２９１】
上で示したように、一部の実施形態では、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）は強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザは長い押圧ジェスチャレコグナイザである（８６０）。一部の実施形態では、第２のジェスチャレコグナイザ（例えば、長い押圧ジェスチャレコグナイザ）は、入力の強度に依存しないジェスチャの特定のタイプ又はセットを認識する。
【０２９２】
一部の実施形態又は状況では、入力は入力の第２の部分に続く入力の第３の部分を含み、方法８００は入力の第３の部分を第１のジェスチャレコグナイザを用いて処理することを含む（８６２）。一部の実施形態では、入力が第１の強度閾値を満足しなくなるとの判定に従って、デバイスは低減した縮尺でプレビュー領域を表示する（例えば、プレビュー領域のサイズを低減する）が、この実施例が、図７Ｈのユーザインターフェースから図７Ｊのユーザインターフェースへの遷移（すなわち、図７Ｉのユーザインターフェースを通って遷移することがない）において示されている。
【０２９３】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、リビールジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣのジェスチャレコグナイザ（Ｒ））などの、第３のジェスチャレコグナイザを含む（８６４）。
【０２９４】
一部の実施形態では、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足するとの判定に応じて、方法は、第１の動作の実行に続いて、インターフェースインターフェース第１のユーザインターフェース（例えば、ユーザインターフェース７０６、図７Ｈ）の表示を第２のユーザインターフェース（例えば、ユーザインターフェース７１０、図７Ｉ）と入れ替えること、及びプレビュー領域（例えば、プレビュー領域７１２、図７Ｈ）の表示を終了することを含む、第１のジェスチャレコグナイザを用いて入力を処理すること（８６６）を含む。一部の実施形態では、第２のユーザインターフェースは、プレビュー領域に表示された内容を含む。
【０２９５】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第４のジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣに示すような、コミットジェスチャレコグナイザ（Ｃ））を含み（８６８）、また、方法８００は、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足すると判定することに応じて、第４のジェスチャレコグナイザ（例えば、コミットジェスチャレコグナイザ）を用いて入力を処理すること（８７０）を含む。一部の実施形態では、第４のジェスチャレコグナイザを用いて入力を処理することは、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えること（及びプレビュー領域の表示を終了すること）、例えば、ユーザインターフェース７０６、図７Ｈ、の表示を、ユーザインターフェース７１０、図７Ｉ、と入れ替えること、及び、プレビュー領域７１２、図７Ｈ、の表示を終了することを含む。
【０２９６】
一部の実施形態では、方法８００は、第２の入力の第１の部分及び第２の入力の第１の部分に続く第２の入力の第２の部分を検出することを含む、タッチ感知面上第２の入力を検出すること（８７２）を含む。例えば、このことは、デバイスが第１のユーザインターフェース又は第１のユーザインターフェース及び第２のユーザインターフェースとは異なる第３のユーザインターフェースを表示している間に発生し得る。
【０２９７】
タッチ感知面上の第２の入力の第１の部分を検出すること（８７２）に応じて、方法は、少なくとも第２の入力の第１の部分に対応するジェスチャレコグナイザの第２のセットを識別すること（８７４）を含み、ジェスチャレコグナイザの第２のセットは、第２のジェスチャレコグナイザ（例えば、長い押圧ジェスチャレコグナイザ）を含み、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）は有さない。例えば、第２の入力は、第１のジェスチャレコグナイザと関係のないオブジェクトの上に位置付けることができる。
【０２９８】
更に、一部の実施形態では、方法８００は、タッチ感知面上の第２の入力の第２の部分を検出することに応じて、第２の入力が第１の所定の時間期間とは異なる持続時間（例えば、第１の所定の時間期間よりも長い持続時間又はこれよりも短い持続時間）を有する第２の所定の時間期間の間タッチ感知面上に留まることを含む第２の長い押圧基準を、第２の入力が満足するとの判定に従って、第２のジェスチャレコグナイザを用いて第２の入力を処理すること（８７６）を含む。例えば、同じそれぞれのオブジェクト又は領域に対して強度に基づくジェスチャレコグナイザ及び長い押圧ジェスチャレコグナイザが存在する、第１のユーザインターフェースにおいては、強度に基づくジェスチャレコグナイザには、長い押圧ジェスチャレコグナイザが長い押圧ジェスチャを認識する前の遅延を大きくすることによって、強度に基づくジェスチャを認識するためのより長い時間が与えられる。対照的に、タップ／選択ジェスチャレコグナイザ及び長い押圧ジェスチャレコグナイザを有し強度に基づくジェスチャレコグナイザを有さないオブジェクト又はユーザインターフェース領域が存在する、第３のユーザインターフェースにおいては、タップ／選択ジェスチャレコグナイザは、タップ／選択ジェスチャを認識するためにそれほど長い時間を必要とせず、したがって、第３のユーザインターフェース中の長い押圧ジェスチャレコグナイザが長い押圧ジェスチャを認識する前の遅延（すなわち、第２の所定の時間期間）を、第１のユーザインターフェースに関する長い押圧ジェスチャレコグナイザが長い押圧ジェスチャを認識する前に必要とする遅延（すなわち、第１の所定の時間期間）よりも短くすることができる。
【０２９９】
一部の実施形態では、入力の第１の部分の検出に応じて、デバイスは第３の動作を実行する（８８０）。一部の実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別すること（８８２）を含む。例えば、第３の動作は、図７Ｖに示すように、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）を使用することによって、フォーカスセレクタに対応するオブジェクト以外のユーザインターフェースを不鮮明にすることであってよい。一部の実施形態では、第３のジェスチャレコグナイザによって第３の動作が実行された後に、長い押圧ジェスチャレコグナイザが続く場合には、第３のジェスチャレコグナイザは中止された状態に遷移し、第３の動作は無効にされる（例えば、不鮮明化が無効にされるか又は取り消される）。後者の例の実施例が、図７Ｖから図７Ｗへの遷移において示されている。他方で、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）が続く場合には、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）による第３の動作（不鮮明化）は中止され、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）によって、第１の動作（例えば、図７Ｘに示すような、プレビュー領域７１２を表示すること）が実行される。一部の実施形態では、リビールジェスチャレコグナイザを有し長い押圧ジェスチャレコグナイザを有さないオブジェクトに関しては、リビール動作（例えば、不鮮明化）は、第１の所定の時間期間の後で自動的には中止されない。しかしながら、一部のかかる実施形態では、リビールジェスチャレコグナイザ及び長い押圧ジェスチャレコグナイザの両方を有するオブジェクトに関しては、リビール動作は、長い押圧ジェスチャレコグナイザが続くときに中止される。
【０３００】
一部の実施形態では、方法８００は、第３の動作（例えば、不鮮明化）の実行（８８０）に続いて、入力が（例えば、ＩＭに達するか又はこれを超えることによって）強度入力基準を満足するとの判定に従って、第１の動作（例えば、プレビュー領域を表示すること）を実行すること（８８４）、並びに、入力が長い押圧基準を満足するとの判定に従って、第２の動作（例えば、メニュー又はメニュービュー７１６、図７Ｕ、を表示すること）を実行すること（８８６）を含む。この場合、これらの判定及び動作は、入力がタッチ感知面と接触したままである間に実行される。一部の実施形態では、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）が入力を処理している（例えば、入力の第２の部分に対応するタッチイベントを生成している）間に、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザは、入力がこれらのジェスチャレコグナイザに関するジェスチャ認識基準に適合するか否かを判定するために、入力の第２の部分を評価している。かかる実施形態では、第３のジェスチャレコグナイザを用いて入力を処理することは、第１のジェスチャレコグナイザを用いて入力を処理すること及び第２のジェスチャレコグナイザを用いて入力を処理することを妨げない。
【０３０１】
上述したように、一部の実施形態では、第１の動作を実行することは、プレビュー領域（例えば、プレビュー領域７１２、図７Ｈ）を表示することを含む（８２０）。更に、一部の実施形態では、第２の動作を実行することは、メニュービュー（例えば、メニュービュー７１６、図７Ｕ）を表示することを含む（８３０）。
【０３０２】
一部の実施形態では、第１の強度閾値は、入力における複数の接触が第１の強度閾値を満足することに応じて満足される（８２２）。例えば、一部のかかる実施形態では、各接触の強度が第１の強度閾値と比較される。しかしながら、一部の他の実施形態では、第１の強度閾値は、入力における複数の接触により加えられる強度を組み合わせたものが第１の強度閾値を満足する（例えば、複数の接触の強度が合計されるか又はそれ以外の方法で組み合わされ、結果として得られる組み合わされた強度が、第１の強度閾値と比較される）ことに応じて満足される（８２４）。
【０３０３】
一部の実施形態では、第１の強度閾値は調節可能である（８２６）。例えば、一部のかかる実施形態では、方法８００は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように、第１のジェスチャレコグナイザを更新すること（８２８）を含む。一部の実施形態では、第１の強度閾値は、３つ以上の所定の強度閾値（例えば、リビール強度閾値ＩＬ、プレビュー強度閾値ＩＭ、及びコミット強度閾値ＩＨ）のグループから選択される。一部の実施形態では、第３の強度閾値は、３つ以上の所定の強度閾値のグループから選択される。
【０３０４】
一部の実施形態では、第１の強度閾値はどのような所定の強度閾値からも独立して選択される。一部の実施形態では、第１のユーザインターフェースは特定のソフトウェアアプリケーションのユーザインターフェースであり、第１の強度閾値は、この特定のソフトウェアアプリケーションによって選択又は指定される。一部の実施形態では、第１の強度閾値は、タッチ感知面上で接触が検出される間に変化しない固定された強度閾値である。しかしながら、一部の他の実施形態では、第１の強度閾値は、ユーザの行動及び／又はデバイスの状態及び／又は他の環境的パラメータに基づく所定の閾値調節ポリシーに基づいて経時的に変化する、動的な強度閾値である。調節可能な強度閾値については、本文献の他の箇所で更に詳細に検討されている。
【０３０５】
図８Ａ〜図８Ｅにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。例えば、一部の実施形態では、タッチ感知面、ディスプレイ、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイスにおいて実行される方法は、ディスプレイ上のウェブページの少なくとも一部に対応するユーザインターフェースの表示中に、タッチ感知面上の、ディスプレイ上のウェブページの表示された部分に対応する第１の場所におけるタッチ入力を検出することを含む。方法はまた、タッチ感知面上のタッチ入力を検出している間に、タッチ感知面上のタッチ入力の強度を（例えば、１つ以上のセンサを用いて）検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値（例えば、マウスダウン強度閾値などの低い強度閾値）未満から第１の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したとの判定に応じて、マウスダウンイベントを生成すること（及び任意選択的に、マウスダウンイベントに対応するウェブページ中の命令を処理すること）も含む。方法は更に、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したと判定することに続いて、タッチ感知面上のタッチ入力の強度を検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値とは異なる第２の強度閾値（例えば、力ダウン強度閾値などの高い強度閾値）未満から第２の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第２の強度閾値未満から第２の強度閾値を超えて変化したと判定することに応じて、マウスダウンイベントとは異なる力ダウンイベントを生成することを含む。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３０６】
加えて、本明細書に記載される他の方法（例えば、方法９００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図８Ａ〜図８Ｅに関して上記した方法８００にも、類似の様式で適用可能であることに留意されたい。例えば、方法８００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法９００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３０７】
図９Ａ〜図９Ｄは、一部の実施形態による、パンジェスチャ入力及び深い押圧入力の曖昧さを除去する方法９００を示すフロー図である。
【０３０８】
デバイスは、第１のユーザインターフェースを表示する（９０２）。第１のユーザインターフェースの表示中に、デバイスはタッチ感知面上の入力を検出する（９０４）。第１のユーザインターフェース及びタッチ感知面上の入力への応答の実施例が、図７Ｌ〜図７Ｓを参照して上記されている。一部の実施形態では、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、入力はフォーカスセレクタ（例えば、フォーカスセレクタ７０７、図７Ｌ）が複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクト（例えば、オブジェクト７０８、図７Ｌ）の上にある間に検出され、第１のユーザインターフェースオブジェクトは、少なくとも第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、パンジェスチャレコグナイザ（Ｓ））に関連付けられている。
【０３０９】
第１のユーザインターフェースの表示中に入力の検出に応じて（９０８）、デバイスは、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作（例えば、図７Ｄ及び図７Ｐに示すように、ユーザインターフェースを不鮮明にすること）を実行する（９１０）。他方で、第１のユーザインターフェースの表示中に入力を検出することに応じて（９０８）、デバイスは、入力が（タッチ感知面と接触したままである間に）タッチ感知面にわたって少なくとも所定の距離だけ移動したことを含むパン基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作（例えば、第１のユーザインターフェースの少なくとも一部をパン又はスクロールすること、図７Ｍ）を実行する（９１２）。上述のように、一部の実施形態では、第２の動作は、（例えば、図７Ｍに示すように）第１のユーザインターフェースの少なくとも一部をスクロールすることを含む（９３０）。
【０３１０】
一部の実施形態では、第１の動作を実行することは、プレビュー領域（例えば、プレビュー領域７１２、図７Ｈ、図７Ｒ、図７Ｓ）を表示することを含む（９２０）。
【０３１１】
一部の実施形態では、強度入力基準は、（例えば、図７Ｌ〜図７Ｑ及び図７ＡＡ〜図７ＣＣの入力移動限界外周７１４を参照して上で検討したように）入力が（タッチ感知面と接触したままである間に）タッチ感知面にわたって少なくとも所定の距離を移動しないことを含む（９２２）。
【０３１２】
一部の実施形態では、第１の強度閾値は調節可能である（９２４）。例えば、一部のかかる実施形態では、方法９００は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように、第１のジェスチャレコグナイザを更新すること（９２６）を含む。一部の実施形態では、第１の強度閾値は、３つ以上の所定の強度閾値（例えば、リビール強度閾値ＩＬ、プレビュー強度閾値ＩＭ、及びコミット強度閾値ＩＨ）のグループから選択される。一部の実施形態では、第３の強度閾値は、３つ以上の所定の強度閾値のグループから選択される。
【０３１３】
一部の実施形態では、第１の強度閾値はどのような所定の強度閾値からも独立して選択される。一部の実施形態では、第１のユーザインターフェースは特定のソフトウェアアプリケーションのユーザインターフェースであり、第１の強度閾値は、この特定のソフトウェアアプリケーションによって選択又は指定される。一部の実施形態では、第１の強度閾値は、タッチ感知面上で接触が検出される間に変化しない固定された強度閾値である。しかしながら、一部の他の実施形態では、第１の強度閾値は、ユーザの行動及び／又はデバイスの状態及び／又は他の環境的パラメータに基づく所定の閾値調節ポリシーに基づいて経時的に変化する、動的な強度閾値である。調節可能な強度閾値については、本文献の他の箇所で更に詳細に検討されている。
【０３１４】
一部の実施形態では、方法９００は、第１の動作の実行に続いて、第２の動作の実行を取り止めること（９１４）を含む。同様に、一部の実施形態では、方法９００は、第２の動作の実行に続いて、第１の動作の実行を取り止めること（９１６）を含む。
【０３１５】
一部の実施形態では、タッチ感知面上の入力を検出すること（９０４）は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分を検出すること（９０６、９５０）を含む。更に、一部のかかる実施形態では、方法９００は、タッチ感知面上の入力の第１の部分を検出すること（例えば、タッチ感知面との入力の最初の接触を検出すること）に応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別することであって、ジェスチャレコグナイザの第１のセットは第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、パンジェスチャレコグナイザ）を含む、識別すること（９５２）を含む。
【０３１６】
一部の実施形態又は状況では、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、入力はフォーカスセレクタが複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトの上にある間に検出され、第１のユーザインターフェースオブジェクトは、少なくとも第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザに関連付けられている。更に、一部の実施形態では、第１のジェスチャレコグナイザを用いて入力を処理することは、第２のジェスチャレコグナイザを失敗した状態に置くことを含む。
【０３１７】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）を用いて入力を処理することを含む、第１の動作を実行する（９５４）。一部の実施形態では、第１の強度閾値（例えば、図７ＬのＩＭ）は、入力検出強度閾値（例えば、図７ＬのＩＬ）とは異なる。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャを認識しないとの判定も必要とする。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗したとの（すなわち、図７Ｓ及び図７Ｔを参照して上で検討したように、第２のジェスチャレコグナイザが失敗した状態に遷移したとの）判定も必要とする。
【０３１８】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力がパン基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて（例えば、パンジェスチャレコグナイザ（Ｓ）、図７Ｌ〜図７Ｓ、を用いて）入力を処理することを含む、第２の動作を実行する（９５４）。一部の実施形態では、第２のジェスチャレコグナイザを用いて入力を処理することはまた、第１のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗した（例えば、１つ以上のセンサによって検出された入力の強度が、所定の時間期間の間に第１の強度閾値を満足しない）との判定も必要とする。図７Ｑに関して上で検討した実施例では、プレビュージェスチャレコグナイザ（Ｐ）は、１つ以上のセンサによって検出された入力の強度が第１の強度閾値（例えば、ＩＭ、図７Ｑ）を満足しないとの、及び入力がパン基準を満足するとのデバイスによる判定に従って、失敗した状態に遷移している。
【０３１９】
上で示したように、一部の実施形態では、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）は強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザはパンジェスチャレコグナイザである（９６０）。一部の実施形態では、第２のジェスチャレコグナイザ（例えば、パンジェスチャレコグナイザ）は、入力の強度に依存しないジェスチャの特定のタイプ又はセットを認識する。
【０３２０】
一部の実施形態又は状況では、入力は入力の第２の部分に続く入力の第３の部分を含み、方法９００は、入力の第３の部分を第１のジェスチャレコグナイザを用いて処理することを含む（９６２）。一部の実施形態では、入力が第１の強度閾値を満足しなくなるとの判定に従って、デバイスは低減した縮尺でプレビュー領域を表示する（例えば、プレビュー領域のサイズを低減する）が、この実施例が、図７Ｈのユーザインターフェースから図７Ｊのユーザインターフェースへの遷移（すなわち、図７Ｉのユーザインターフェースを通って遷移することがない）において示されている。
【０３２１】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、リビールジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣのジェスチャレコグナイザ（Ｒ））などの、第３のジェスチャレコグナイザを含む（９６４）。
【０３２２】
一部の実施形態では、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足するとの判定に応じて、方法９００は、（例えば、第１の動作の実行に続いて）第１のユーザインターフェース（例えば、ユーザインターフェース７０６、図７Ｈ）の表示を第２のユーザインターフェース（例えば、ユーザインターフェース７１０、図７Ｉ）と入れ替えることを含む、第１のジェスチャレコグナイザを用いて入力を処理すること（９６６）を含む。第１の動作がプレビュー領域を表示することを含む一部の実施形態では、第２の動作を実行することは、プレビュー領域（例えば、プレビュー領域７１２、図７Ｈ）の表示を終了することを含む。一部の実施形態では、第２のユーザインターフェースは、プレビュー領域に表示された内容を含む。
【０３２３】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第４のジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣに示すような、コミットジェスチャレコグナイザ（Ｃ））を含み（９６８）、また、方法９００は、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足すると判定することに応じて、第４のジェスチャレコグナイザ（例えば、コミットジェスチャレコグナイザ）を用いて入力を処理すること（９７０）を含む。一部の実施形態では、第４のジェスチャレコグナイザを用いて入力を処理することは、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えること（及びプレビュー領域の表示を終了すること）、例えば、ユーザインターフェース７０６、図７Ｈ、の表示を、ユーザインターフェース７１０、図７Ｉ、と入れ替えること、及び、プレビュー領域７１２、図７Ｈ、の表示を終了することを含む。
【０３２４】
一部の実施形態では、方法９００は、入力の第１の部分の検出に応じて第３の動作を実行すること（９７２）を含む。一部の実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別すること（９７４）を含む。例えば、第３の動作は、図７Ｖに示すように、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）を使用することによって、フォーカスセレクタに対応するオブジェクト以外のユーザインターフェースを不鮮明にすることであってよい。一部の実施形態では、第３のジェスチャレコグナイザによって第３の動作が実行された後に、パンジェスチャレコグナイザが続く場合には、第３のジェスチャレコグナイザは中止された状態に遷移し、第３の動作は無効にされる（例えば、不鮮明化が無効にされるか又は取り消される）。後者の例の実施例が、図７Ｐから図７Ｑへの遷移において示されている。他方で、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）が続く場合には、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）による第３の動作（不鮮明化）は中止され、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）によって、第１の動作（例えば、図７Ｒに示すような、プレビュー領域７１２を表示すること）が実行される。
【０３２５】
一部の実施形態では、方法９００は、第３の動作（例えば、不鮮明化）の実行（９７２）に続いて、入力が（例えば、ＩＭに達するか又はこれを超えることによって）強度入力基準を満足するとの判定に従って、第１の動作（例えば、プレビュー領域を表示すること）を実行すること（９７６）、並びに、入力がパン基準を満足するとの判定に従って、第２の動作（第１のユーザインターフェースの少なくとも一部をパン又はスクロールすること、図７Ｍ〜図７Ｎ、図７Ｑなど）を実行すること（９７８）を含む。典型的には、これらの判定及び動作は、入力がタッチ感知面と接触したままである間に実行される。一部の実施形態では、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）が入力を処理している（例えば、入力の第２の部分に対応するタッチイベントを生成している）間に、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザは、入力がこれらのジェスチャレコグナイザに関するジェスチャ認識基準に適合するか否かを判定するために、入力の第２の部分を評価している。かかる実施形態では、第３のジェスチャレコグナイザを用いて入力を処理することは、第１のジェスチャレコグナイザを用いて入力を処理すること及び第２のジェスチャレコグナイザを用いて入力を処理することを妨げない。
【０３２６】
一部の実施形態では、第３の動作（９７８）の実行に続いて第２の動作を実行することは、第３の動作を無効にすることを含む（９８０）。例えば、一部の実施形態では、第３の動作が無効にされる際にアニメーションが表示される（例えば、ユーザインターフェースがスクロールし始める際に短い時間の期間を経て不鮮明化がゼロにされる）。更に、一部の実施形態では、第３の動作の実行に続いて第２の動作を実行することは、第３のジェスチャレコグナイザを中止された状態に置くことを含む。
【０３２７】
図９Ａ〜図９Ｄにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。例えば、一部の実施形態では、タッチ感知面、ディスプレイ、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイスにおいて実行される方法は、ディスプレイ上のウェブページの少なくとも一部に対応するユーザインターフェースの表示中に、タッチ感知面上の、ディスプレイ上のウェブページの表示された部分に対応する第１の場所におけるタッチ入力を検出することを含む。方法はまた、タッチ感知面上のタッチ入力を検出している間に、タッチ感知面上のタッチ入力の強度を（例えば、１つ以上のセンサを用いて）検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値（例えば、マウスダウン強度閾値などの低い強度閾値）未満から第１の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したとの判定に応じて、マウスダウンイベントを生成すること（及び任意選択的に、マウスダウンイベントに対応するウェブページ中の命令を処理すること）も含む。方法は更に、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したと判定することに続いて、タッチ感知面上のタッチ入力の強度を検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値とは異なる第２の強度閾値（例えば、力ダウン強度閾値などの高い強度閾値）未満から第２の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第２の強度閾値未満から第２の強度閾値を超えて変化したと判定することに応じて、マウスダウンイベントとは異なる力ダウンイベントを生成することを含む。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３２８】
加えて、本明細書に記載される他の方法（例えば、方法８００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図９Ａ〜図９Ｄに関して上記した方法８００にも、類似の様式で適用可能であることに留意されたい。例えば、方法９００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３２９】
図１０Ａ〜図１０Ｄは、一部の実施形態による、タップジェスチャ入力及び深い押圧入力の曖昧さを除去する方法１０００を示すフロー図である。方法１０００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である（例えば、タッチ感知面はトラックパッドである）。方法８００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０３３０】
後述するように、方法１０００は、タッチ入力を命令で処理するための高度な方式を提供する。方法１０００は、タッチ入力を処理する際の効率を改善する。
【０３３１】
デバイスは、第１のユーザインターフェースを表示する（１００２）。第１のユーザインターフェースの表示中に、デバイスはタッチ感知面上の入力を検出する（１００４）。第１のユーザインターフェース及びタッチ感知面上の入力への応答の実施例が、図７Ａ〜図７Ｋを参照して上記されている。一部の実施形態では、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、入力はフォーカスセレクタ（例えば、フォーカスセレクタ７０５、図７Ａ）が複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクト（例えば、オブジェクト７０８、図７Ａ）の上にある間に検出され、第１のユーザインターフェースオブジェクトは、少なくとも第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、長い押圧ジェスチャレコグナイザ）に関連付けられている。
【０３３２】
第１のユーザインターフェースの表示中に入力の検出に応じて（１００８）、デバイスは、入力が第１の強度閾値を満足しかつ第１の所定の時間期間の間入力がタッチ感知面上に留まることを含む強度入力基準を入力が満足するとの判定に従って、第１の動作（例えば、図７Ｄに示すように、ユーザインターフェースを不鮮明にすること）を実行する（１０１０）。他方で、第１のユーザインターフェースの表示中に入力を検出することに応じて（１００８）、デバイスは、第１の所定の時間期間中に入力がタッチ感知面上に留まるのをやめることを含むタップ基準を入力が満足するとの判定に従って、第１の動作とは異なる第２の動作（例えば、フォーカスセレクタ７０５の現在の位置に対応するオブジェクトを選択又はアプリケーションを起動すること、及びアプリケーションユーザインターフェースを表示すること、図７Ｂ）を実行する（１０１２）。別の言い方をすれば、入力は、第１の所定の時間期間（例えば、時間７００２で終わる時間期間、図７Ｂ）の終わりの前に、入力がタッチ感知面から取り除かれる場合に、タップ基準を満たす。一部の実施形態では、入力が強度入力基準を満足するか否かに関係なく、入力がタップ基準を満足するとの判定に従って、第２の動作が実行される（１０１４）。
【０３３３】
一部の実施形態では、第１の動作を実行することは、プレビュー領域（例えば、プレビュー領域７１２、図７Ｇ）を表示することを含む（１０２０）。更に、一部の実施形態では、第２の動作を実行することは、第１のユーザインターフェース（例えば、ユーザインターフェース７０６、図７Ａ）の表示をタッチ感知面上の入力の場所に対応するソフトウェアアプリケーションの第３のユーザインターフェース（例えば、ユーザインターフェース７１０、図７Ｂ）と入れ替えることを含む（１２２０）。例えば、一部の実施形態では、オブジェクト上のタップジェスチャにより、そのオブジェクトに対応するソフトウェアアプリケーションのユーザインターフェースの表示が引き起こされる。
【０３３４】
一部の実施形態では、第１の強度閾値は調節可能である（１０２４）。例えば、一部のかかる実施形態では、方法１０００は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように、第１のジェスチャレコグナイザを更新すること（１０２６）を含む。一部の実施形態では、第１の強度閾値は、３つ以上の所定の強度閾値（例えば、リビール強度閾値ＩＬ、プレビュー強度閾値ＩＭ、及びコミット強度閾値ＩＨ）のグループから選択される。一部の実施形態では、第３の強度閾値は、３つ以上の所定の強度閾値のグループから選択される。
【０３３５】
一部の実施形態では、第１の強度閾値はどのような所定の強度閾値からも独立して選択される。一部の実施形態では、第１のユーザインターフェースは特定のソフトウェアアプリケーションのユーザインターフェースであり、第１の強度閾値は、この特定のソフトウェアアプリケーションによって選択又は指定される。一部の実施形態では、第１の強度閾値は、タッチ感知面上で接触が検出される間に変化しない固定された強度閾値である。しかしながら、一部の他の実施形態では、第１の強度閾値は、ユーザの行動及び／又はデバイスの状態及び／又は他の環境的パラメータに基づく所定の閾値調節ポリシーに基づいて経時的に変化する、動的な強度閾値である。調節可能な強度閾値については、本文献の他の箇所で更に詳細に検討されている。
【０３３６】
一部の実施形態では、方法１０００は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の所定の時間期間の間タッチ感知面上に留まった後、入力がタッチ感知面上で検出されなくなり、かつ入力が強度入力基準を満足しない、との判定に従って、第２の動作を実行すること（１０２８）を含む。例えば、例えば、図７Ｂの強度プロファイル７１１０を有する入力はこれらの基準を満足し、このため、入力が第１の所定の時間期間よりも長くタッチ感知面上に留まることにも関わらず、タップ基準を満足する。
【０３３７】
他方で、方法１０００は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の所定の時間期間の間タッチ感知面上に留まった後、入力がタッチ感知面上で検出されなくなり、かつ入力が強度入力基準を満足する、との判定に従って、第２の動作の実行を取り止めること（１０２８）を含む。例えば、図７Ｋの強度プロファイル７１１２又は７１１４を有する入力はタップ基準を満足しないが、その理由は、いずれの入力も第１の所定の時間期間を超えて延長し、かつ強度入力基準を満足する（例えば、入力が強度閾値ＩＬ又はＩＭを超える強度を有する）からである。
【０３３８】
一部の実施形態では、タッチ感知面上の入力を検出すること（１００４）は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分を検出すること（１００６、１０５０）を含む。更に、一部のかかる実施形態では、方法１０００は、タッチ感知面上の入力の第１の部分を検出すること（例えば、タッチ感知面との入力の最初の接触を検出すること）に応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別することであって、ジェスチャレコグナイザの第１のセットは第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）及び第２のジェスチャレコグナイザ（例えば、タップジェスチャレコグナイザ）を含む、識別すること（１０５２）を含む。
【０３３９】
一部の実施形態又は状況では、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、入力はフォーカスセレクタが複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトの上にある間に検出され、第１のユーザインターフェースオブジェクトは、少なくとも第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザに関連付けられている。更に、一部の実施形態では、第１のジェスチャレコグナイザを用いて入力を処理することは、第２のジェスチャレコグナイザを失敗した状態に置くことを含む。
【０３４０】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）を用いて入力を処理することを含む、第１の動作を実行する（１０５４）。一部の実施形態では、第１の強度閾値（例えば、図７ＡのＩＭ）は、入力検出強度閾値（例えば、図７ＡのＩＬ）とは異なる。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャを認識しないとの判定も必要とする。一部の実施形態では、第１のジェスチャレコグナイザを用いた入力の処理はまた、第２のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗したとの（すなわち、図７Ｆのユーザインターフェースから図７Ｇのユーザインターフェースへの遷移において示すように、第２のジェスチャレコグナイザが失敗した状態に遷移したとの）判定も必要とする。
【０３４１】
更に、上述した実施形態では、タッチ感知面上の入力の第２の部分を検出することに応じて、デバイスは、入力がタップ基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて（例えば、タップジェスチャレコグナイザ（Ｔ）、図７Ａ〜図７Ｋ、を用いて）入力を処理することを含む、第２の動作を実行する（１０５４）。一部の実施形態では、第２のジェスチャレコグナイザを用いて入力を処理することはまた、第１のジェスチャレコグナイザが入力に対応するジェスチャの認識に失敗した（例えば、入力が第１の所定の時間期間の間タッチ感知面上に留まるのをやめたために）との判定も必要とする。図７Ｂに関して上で検討した実施例では、入力が第１の所定の時間期間の間（すなわち、その全体にわたって）タッチ感知面上に留まるのをやめたとのデバイスによる判定に従って、プレビュージェスチャレコグナイザ（Ｐ）が失敗した状態に遷移している。
【０３４２】
上述のように、一部の実施形態では、第１のジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）は強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザはタップジェスチャレコグナイザである（１０６０）。一部の実施形態では、第２のジェスチャレコグナイザ（例えば、タップジェスチャレコグナイザ）は、入力の強度に依存しないタップジェスチャを認識する。
【０３４３】
一部の実施形態又は状況では、入力は入力の第２の部分に続く入力の第３の部分を含み、方法１０００は、入力の第３の部分を第１のジェスチャレコグナイザを用いて処理することを含む（１０６２）。一部の実施形態では、入力が第１の強度閾値を満足しなくなるとの判定に従って、デバイスは低減した縮尺でプレビュー領域を表示する（例えば、プレビュー領域のサイズを低減する）が、この実施例が、図７Ｈのユーザインターフェースから図７Ｊのユーザインターフェースへの遷移（すなわち、図７Ｉのユーザインターフェースを通って遷移することがない）において示されている。
【０３４４】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、リビールジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣのジェスチャレコグナイザ（Ｒ））などの、第３のジェスチャレコグナイザを含む（１０６４）。
【０３４５】
一部の実施形態では、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足するとの判定に応じて、方法１０００は、（例えば、第１の動作の実行に続いて）第１のユーザインターフェース（例えば、ユーザインターフェース７０６、図７Ｈ）の表示を第２のユーザインターフェース（例えば、ユーザインターフェース７１０、図７Ｉ）と入れ替えることを含む、第１のジェスチャレコグナイザを用いて入力を処理すること（１０６６）を含む。第１の動作がプレビュー領域を表示することを含む一部の実施形態では、第２の動作を実行することは、プレビュー領域（例えば、プレビュー領域７１２、図７Ｈ）の表示を終了することを含む。一部の実施形態では、第２のユーザインターフェースは、プレビュー領域に表示された内容を含む。
【０３４６】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第４のジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣに示すような、コミットジェスチャレコグナイザ（Ｃ））を含み（１０６８）、また、方法１０００は、入力が第２の強度閾値（例えば、第１の強度閾値ＩＭよりも高いコミット強度閾値ＩＨ）を満足すると判定することに応じて、第４のジェスチャレコグナイザ（例えば、コミットジェスチャレコグナイザ）を用いて入力を処理すること（１０７０）を含む。一部の実施形態では、第４のジェスチャレコグナイザを用いて入力を処理することは、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えること（及びプレビュー領域の表示を終了すること）、例えば、ユーザインターフェース７０６、図７Ｈ、の表示を、ユーザインターフェース７１０、図７Ｉ、と入れ替えること、及び、プレビュー領域７１２、図７Ｈ、の表示を終了することを含む。
【０３４７】
一部の実施形態では、方法１０００は、入力の第１の部分の検出に応じて第３の動作を実行すること（１０７２）を含む。一部の実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別すること（１０７４）を含む。例えば、第３の動作は、図７Ｄに示すように、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）を使用することによって、フォーカスセレクタに対応するオブジェクト以外のユーザインターフェースを不鮮明にすることであってよい。一部の実施形態では、第３のジェスチャレコグナイザによって第３の動作が実行された後に、タップジェスチャレコグナイザが続く場合には、第３のジェスチャレコグナイザは中止された状態に遷移し、第３の動作は無効にされる（例えば、不鮮明化が無効にされるか又は取り消される）。他方で、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）が続く場合には、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）による第３の動作（不鮮明化）は中止され、深い押圧ジェスチャレコグナイザ（例えば、プレビュージェスチャレコグナイザ）によって、第１の動作（例えば、図７Ｅ〜図７Ｈに示すような、プレビュー領域７１２を表示すること）が実行される。
【０３４８】
一部の実施形態では、方法１０００は、第３の動作（例えば、不鮮明化）の実行（１０７２）に続いて、入力が（例えば、ＩＭに達するか又はこれを超えることによって）強度入力基準を満足するとの判定に従って、第１の動作（例えば、プレビュー領域を表示すること）を実行すること（１０７６）、並びに、入力がタップ基準を満足するとの判定に従って、第２の動作（例えば、オブジェクトを選択すること及び選択されたオブジェクトに関連付けられたアプリケーションのユーザインターフェースを表示すること、図７Ｉ）を実行すること（１０７８）を含む。一部の実施形態では、第３のジェスチャレコグナイザ（例えば、リビールジェスチャレコグナイザ）が入力を処理している（例えば、入力の第２の部分に対応するタッチイベントを生成している）間に、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザは、入力がこれらのジェスチャレコグナイザに関するジェスチャ認識基準に適合するか否かを判定するために、入力の第２の部分を評価している。かかる実施形態では、第３のジェスチャレコグナイザを用いて入力を処理することは、第１のジェスチャレコグナイザを用いて入力を処理すること及び第２のジェスチャレコグナイザを用いて入力を処理することを妨げない。
【０３４９】
一部の実施形態では、第３の動作を実行することは、第１の所定の時間期間の間に開始される（１０８０）。例えば、第１の所定の時間期間が経過する前に入力の強度が入力検出強度閾値（例えば、ＩＬ、図７Ｄ）を超える場合に（すなわち、超えるとの判定に従って）、第１の所定の時間期間が経過する前であっても、ヒント／リビールアニメーション（例えば、タッチ感知面上の入力の強度に従う第１のユーザインターフェースの漸進的な不鮮明化）が表示される。
【０３５０】
図１０Ａ〜図１０Ｄにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。例えば、一部の実施形態では、タッチ感知面、ディスプレイ、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイスにおいて実行される方法は、ディスプレイ上のウェブページの少なくとも一部に対応するユーザインターフェースの表示中に、タッチ感知面上の、ディスプレイ上のウェブページの表示された部分に対応する第１の場所におけるタッチ入力を検出することを含む。方法はまた、タッチ感知面上のタッチ入力を検出している間に、タッチ感知面上のタッチ入力の強度を（例えば、１つ以上のセンサを用いて）検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値（例えば、マウスダウン強度閾値などの低い強度閾値）未満から第１の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したとの判定に応じて、マウスダウンイベントを生成すること（及び任意選択的に、マウスダウンイベントに対応するウェブページ中の命令を処理すること）も含む。方法は更に、タッチ感知面上のタッチ入力の強度が第１の強度閾値未満から第１の強度閾値を超えて変化したと判定することに続いて、タッチ感知面上のタッチ入力の強度を検出すること、タッチ感知面上のタッチ入力の強度が第１の強度閾値とは異なる第２の強度閾値（例えば、力ダウン強度閾値などの高い強度閾値）未満から第２の強度閾値を超えて変化したか否かを判定すること、並びに、タッチ感知面上のタッチ入力の強度が第２の強度閾値未満から第２の強度閾値を超えて変化したと判定することに応じて、マウスダウンイベントとは異なる力ダウンイベントを生成することを含む。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３５１】
加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１１００、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１０Ａ〜図１０Ｄに関して上記した方法８００にも、類似の様式で適用可能であることに留意されたい。例えば、方法９００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１１００、１２００、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３５２】
図１１Ａは、一部の実施形態による、アプリケーション非依存の所定の命令セット（例えば、アプリケーション非依存モジュール２３０）を使用してタッチ入力を処理する方法を示す、高レベルのフロー図である。
【０３５３】
アプリケーション専用モジュール２２０は、ユーザインターフェース（例えば、図７Ｃのメールアプリケーションユーザインターフェース７０６）を表示する（１１０２）。
【０３５４】
ユーザインターフェースが表示されている間に、アプリケーション非依存モジュール２３０は、入力の第１の部分（例えば、図７Ｃの接触７０５）を検出し（１１０４）、プレビュー動作を提供するためのアプリケーション非依存の所定の命令セットを実行する（１１０５）。一部の実施形態では、アプリケーション専用モジュール２２０の制御は、アプリケーション非依存モジュール２３０に与えられる。プレビュー動作のためにアプリケーション非依存モジュール２３０を使用することによって、アプリケーション専用モジュール２２０の演算負荷及びサイズが低減される。プレビュー動作を提供するために、複数のソフトウェアアプリケーションが同じアプリケーション非依存モジュール２３０を使用することができ、これによりメモリ使用が低減される。一部の実施形態では、アプリケーション非依存モジュール２３０はデバイスのオペレーティングシステム又は標準的なライブラリ内に設けられ、これによりソフトウェア開発者による開発時間も低減される。更に、アプリケーション非依存モジュール２３０は対話のための標準化された方法を提供し、これにより、ユーザがこれらの方法を素早く学習することが容易になり、またユーザに対する認知上の負荷が低減される。
【０３５５】
アプリケーション非依存モジュール２３０は、プレビュー動作を実行する（１１０６）。
【０３５６】
一部の実施形態では、アプリケーション非依存モジュール２３０は、アプリケーション専用モジュール２２０に動作情報（例えば、プレビュー動作が始まったことを示す情報）を送信する（１１０７）。アプリケーション専用モジュール２２０は、動作情報を受信し（１１０８）、プレビューコンテンツを生成し（１１０９）、プレビューコンテンツをアプリケーション非依存モジュール２３０に送信する（１１１０）。アプリケーション非依存モジュール２３０は、プレビューコンテンツを受信する（１１１１）。
【０３５７】
アプリケーション専用モジュール２３０は、ユーザインターフェースオブジェクト（例えば、図７Ｄのメールアプリケーションユーザインターフェース７０６）を視覚的に区別する（１１１２）。
【０３５８】
アプリケーション非依存モジュール２３０は、入力の第２の部分を受信する（１１１３）（例えば、図７Ｅに示すように入力の強度の増大が検出される）。
【０３５９】
アプリケーション非依存モジュール２３０は、プレビュー領域（例えば、図７Ｇのプレビュー領域７１２）を表示する（１１１４）。
【０３６０】
一部の実施形態では、アプリケーション非依存モジュール２３０は、プレビュー領域を更新する（１１１５）（例えば、図７Ｈに示すように、入力の強度の更なる増大が検出され、プレビュー領域７１２のサイズが大きくされる）。
【０３６１】
一部の実施形態では、アプリケーション非依存モジュール２３０は、プレビュー領域の表示を終了する（１１１６）（例えば、図７Ｊ〜図７Ｋに示すように、プレビュー領域７１２は、入力の強度が強度閾値ＩＬを下回って降下するとき、表示されなくなる）。
【０３６２】
一部の実施形態では、アプリケーション非依存モジュール２３０は、入力の第３の部分を検出し第２のユーザインターフェースを表示する（１１１７）（例えば、図７Ｉに示すように、入力の強度が強度閾値ＩＨに達することに応じて、ブラウザアプリケーションユーザインターフェース７１０が表示される）。このとき、アプリケーション専用モジュール２２０の制御がアプリケーション専用モジュール２２０に戻され、アプリケーション専用モジュール２２０は続く入力を処理する（１１１８）。
【０３６３】
図１１Ａにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１１Ａに関して上記した方法にも、類似の様式で適用可能であることに留意されたい。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３６４】
図１１Ｂ〜図１１Ｃは、一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法１１００を示すフロー図である。方法１１００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１１００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０３６５】
後述するように、方法１１００は、タッチ入力をアプリケーション非依存の命令セットで処理するための高度な方式を提供する。方法１１００は、タッチ入力を処理する際の効率を改善する。ソフトウェアアプリケーションのサイズを小さくすること、ソフトウェアアプリケーションの速さを改善すること、及び場合によってはメモリ使用を低減することによって、かかる方法及びインターフェースはより効率的なヒト−マシンインターフェースを提供し、これにより全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。更には、かかる方法は、アプリケーション開発者に対する負荷を低減し、タッチ入力をより効率的に処理できるソフトウェアアプリケーションの開発を容易にする。更に、かかる方法及びユーザインターフェースは、ユーザインターフェースと対話する際の標準化された手法を提供し、これにより、ユーザに対する認知上の負荷が低減され、動作時間及びユーザエクスペリエンスが更に改善される。
【０３６６】
デバイスは、第１のソフトウェアアプリケーションの第１のユーザインターフェース（例えば、図７Ｃのメールアプリケーションユーザインターフェース７０６）を表示し、第１のユーザインターフェースは複数のユーザインターフェースオブジェクト（例えば、ユーザインターフェースオブジェクト７０８、「Ｉｎｔｅｇｒａｔｅ  Ｕｓ（繋がる）」及び「Ｓｕｂｔｒａｃｔ（削除する）」などのボタン、電子メールアドレス、並びに他のコントロール）を含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている（１１３０）（例えば、ユーザインターフェースオブジェクト７０８は、例えば、接触による入力を受信する前に、ユーザインターフェースオブジェクト７０８をプレビュー動作のためのアプリケーション非依存モジュール２３０に事前登録することによって、プレビュー動作のためのアプリケーション非依存の所定の命令セットを用いて動作するように構成される）。一部の実施形態では、プレビュー動作のためのアプリケーション非依存の所定の命令セットは、第１のソフトウェアアプリケーションの第１のソフトウェアアプリケーションに固有の部分とは異なる。例えば、プレビュー動作のためのアプリケーション非依存の所定の命令セットは、第１のソフトウェアアプリケーション（例えば、アプリケーション１（１３６−１））と統合されており、かつ第１のソフトウェアアプリケーションがこの第１のアプリケーションが実行されるオペレーティングシステムによって提供されたタッチ入力情報と相互作用するのを可能にする、ドロップインモジュール（例えば、図１Ｃのタッチを処理するモジュール２２０）としてアプリケーション開発者に提供される、アプリケーション開発フレームワークの一部であるか、又は、プレビュー動作のためのアプリケーション非依存の所定の命令セットは、第１のソフトウェアアプリケーションに一貫したユーザインターフェースを提供するＡＰＩに従って第１のソフトウェアアプリケーションに関する第１のユーザインターフェースを更新する、オペレーティングシステムの一部であるか、のいずれかである。一部の実施形態では、デバイス上で実行される複数の異なる第三者アプリケーションは、アプリケーション非依存の所定の命令セットへの独立的なアクセス権を含む。一部の実施形態では、デバイス上で実行される複数の異なる第三者アプリケーションは、アプリケーション非依存の所定の命令セットの独立的なインスタンスを含む。一部の実施形態では、デバイス上の複数の異なるアプリケーションは、すべての第三者アプリケーションをサポートするアプリケーション非依存の所定の命令セットと対話するためのコードを含む。一部の実施形態では、プレビュー動作のためのアプリケーション非依存の所定の命令セットは、第１のソフトウェアアプリケーションとは別個である。一部の実施形態では、プレビュー動作のためのアプリケーション非依存の所定の命令セットは、第１のソフトウェアアプリケーションに含まれている。
【０３６７】
デバイスは、ディスプレイ上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分（例えば、図７Ｃの入力７０５などの押圧入力）を検出する（１１３２）。一部の実施形態では、入力は、タッチ感知面上の単一の接触によって行われる。一部の実施形態では、入力は動かない入力である。一部の実施形態では、入力における接触は、入力中にタッチ感知面にわたって移動する。
【０３６８】
デバイスは、入力の第１の部分の検出に応じて及び入力が第１の強度閾値（例えば、図７ＣのＩＬなどの、デバイスが第１のユーザインターフェースを不鮮明にし始める「リビール」強度閾値）を満足することを含むリビール基準を入力の第１の部分が満足するとの判定に従って、アプリケーション非依存の所定の命令セットにプレビューコンテンツを提供すること（例えば、図１１Ａの動作１１１０）を含め、プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行する（１１３４）。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、（例えば、図７Ｄ〜図７Ｇに示すように、プレビュー領域を表示する前に）第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトを視覚的に区別すること（例えば、図７Ｄに示すように、第１のユーザインターフェースオブジェクト以外の第１のユーザインターフェースを不鮮明にすること）と、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトの視覚的区別の開始後に、入力の第１の部分に続く入力の第２の部分（例えば、図７Ｇのフォーカスセレクタ７０５の強度の増大）を受信すること、及び、入力が第２の強度閾値を満足することを含むプレビュー基準（例えば、図７ＧのＩＭなどの、第１のユーザインターフェースオブジェクトをより強く押圧することによって到達可能な別のユーザインターフェースのプレビューをデバイスが表示し始める、第１の強度閾値よりも高い「プレビュー」強度閾値）を入力の第２の部分が満足するとの判定に従って、第１のユーザインターフェース上に重ねられたプレビュー領域（例えば、図７Ｇのプレビュー領域７１２）を表示することと、を含む。プレビュー領域はプレビューコンテンツを含む。一部の実施形態では、プレビューコンテンツは、第１のユーザインターフェースオブジェクトがアクティブ化されるときに提示される、ユーザインターフェースの小さくしたサイズのビューである（例えば、プレビュー領域７１２内のプレビューコンテンツは、図７Ｂに示すように、フォーカスセレクタがユーザインターフェースオブジェクト７０８上にある間にタップジェスチャに応じて表示される、ブラウザアプリケーションユーザインターフェース７１０の小さくしたサイズのビューである）。
【０３６９】
一部の実施形態では、プレビュー動作の開始後は、プレビュー動作は、第１のソフトウェアアプリケーションから独立して（例えば、第１のソフトウェアアプリケーションの第１のソフトウェアアプリケーションに固有の部分から独立して）実行される（１１３６）。例えば、図１１Ａに示すように、プレビュー動作は、プレビューコンテンツの受信に続いて、アプリケーション非依存モジュール２３０によってアプリケーション専用モジュール２２０から独立して実行される。
【０３７０】
一部の実施形態では、プレビュー動作は、接触の強度に従ってプレビュー領域を更新することを含む（１１３８）（例えば、図７Ｈに示すように、入力の強度の更なる増大が検出され、プレビュー領域７１２のサイズが大きくされる）。
【０３７１】
一部の実施形態では、プレビュー動作は、入力の第２の部分の検出に応じて、入力の第２の部分がプレビュー領域消滅基準（例えば、接触のリフトオフなどの、入力の終わり）を満たすとの判定に従って、プレビュー領域の表示を終了すること、及び、第１のユーザインターフェースの表示を維持すること（例えば、図７Ｊ〜図７Ｋに示すように、入力の強度が強度閾値ＩＬを下回って降下するとき、プレビュー領域７１２は表示されなくなる）を含む（１１４０）。一部の実施形態では、デバイスがプレビュー領域の表示を終了することに続いて、デバイスは、少なくとも第１のソフトウェアアプリケーションの第１のソフトウェアアプリケーションに固有の部分を使用して、続く入力を処理する。
【０３７２】
一部の実施形態では、プレビュー動作は、入力の第２の部分の検出後に、接触による入力の第３の部分を検出することと、接触による入力の第３の部分を検出することに応じて、入力の第３の部分がユーザインターフェース入れ替え基準を満足するとの判定に従って、第１のユーザインターフェース（及び重ねられたプレビュー領域）の表示を第１のユーザインターフェースとは異なる第２のユーザインターフェース（例えば、図７Ｉに示すように、入力の強度が強度閾値ＩＨに達することに応じて、ブラウザアプリケーションユーザインターフェース７１０が表示される）と入れ替えることと、を含む（１１４２）。
【０３７３】
一部の実施形態では、プレビュー動作は、第２のユーザインターフェースを生成するために、アプリケーション非依存の所定の命令セットから、第１のユーザインターフェースオブジェクトに関する動作（例えば、第１のユーザインターフェースオブジェクトの選択又はアクティブ化）を示す情報を（例えば、図１Ｃのアプリケーションコア１（２３０−１）などの、第１のソフトウェアアプリケーションの第１のソフトウェアアプリケーションに固有の部分に）送信することと、アプリケーション非依存の所定の命令セットにおいて第２のユーザインターフェースを受信することと（例えば、図１１Ａの動作１１０７及び１１１１を利用して、図７Ｇに示すようにプレビュー領域内にプレビューコンテンツを提示する、及び任意選択的に、図７Ｉに示すような入力の強度の更なる増大に応じて第１のユーザインターフェースをプレビューコンテンツを含む第２のユーザインターフェースと置き換えるために、アプリケーション非依存モジュール２３０は、図７Ｂのブラウザアプリケーションユーザインターフェース７１０などのプレビューコンテンツを受信する）、を含む（１１４４）。プレビューコンテンツは、第２のユーザインターフェースの少なくとも一部を含む。一部の実施形態では、プレビューコンテンツは、第２のユーザインターフェースの全体を含む。
【０３７４】
一部の実施形態では、プレビュー動作は、第１のソフトウェアアプリケーション（例えば、第１のソフトウェアアプリケーションの第１のソフトウェアアプリケーションに固有の部分）において、第１のユーザインターフェースオブジェクトに関する動作を示す情報を受信することと、第２のユーザインターフェースを生成することと、第２のユーザインターフェースをアプリケーション非依存の所定の命令セットに送信することと（例えば、図１１Ａに示すような、アプリケーション専用モジュール２２０によって実行される動作１１０８、１１０９、及び１１１０）、を含む（１１４６）。一部の実施形態では、プレビューコンテンツを提供すること以外には、アプリケーション専用モジュール２２０はプレビュー動作を実行することに関して使用されない。
【０３７５】
図１１Ｂ〜図１１Ｃにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１５０、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１１Ｂ〜図１１Ｃに関して上記した方法１１００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１１００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１５０、１２００、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３７６】
図１１Ｄは、一部の実施形態による、アプリケーション非依存の所定の命令セットを使用してタッチ入力を処理する方法１１５０を示すフロー図である。方法１１５０は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１１５０の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０３７７】
後述するように、方法１１５０は、タッチ入力をアプリケーション非依存の命令セットで処理するための高度な方式を提供する。方法１１５０は、タッチ入力を処理する際の効率を改善する。ソフトウェアアプリケーションのサイズを小さくすること、ソフトウェアアプリケーションの速さを改善すること、及びメモリ使用を場合によっては低減することによって、かかる方法及びインターフェースはより効率的なヒト−マシンインターフェースを提供し、これにより全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。更には、かかる方法は、アプリケーション開発者に対する負荷を低減し、タッチ入力をより効率的に処理できるソフトウェアアプリケーションの開発を容易にする。更に、かかる方法及びユーザインターフェースは、ユーザインターフェースと対話する際の標準化された手法を提供し、これにより、ユーザに対する認知上の負荷が低減され、動作時間及びユーザエクスペリエンスが更に改善される。
【０３７８】
デバイスは、第１のソフトウェアアプリケーションの第１のユーザインターフェース（例えば、図７Ｃのメールアプリケーションユーザインターフェース７０６）を表示し、第１のユーザインターフェースは複数のユーザインターフェースオブジェクト（例えば、ユーザインターフェースオブジェクト７０８、「Ｉｎｔｅｇｒａｔｅ  Ｕｓ」及び「Ｓｕｂｔｒａｃｔ」などのボタン、電子メールアドレス、並びに他のコントロール）を含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている（１１５２）（例えば、ユーザインターフェースオブジェクト７０８は、プレビュー動作のためのアプリケーション非依存の所定の命令セットを用いて動作するように構成される）。
【０３７９】
デバイスは、ディスプレイ上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分（例えば、図７Ｇの入力７０５などの押圧入力）を検出する（１１５４）。
【０３８０】
デバイスは、入力の第１の部分の検出に応じて及び入力の第１の部分がプレビュー基準を満たすとの判定に従って、プレビュー動作のためのアプリケーション非依存の所定の命令セット（例えば、図１１Ａの動作１１０５）を実行する（１１５６）。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース上に重ねられたプレビュー領域（例えば、図７Ｇに示すような、メールアプリケーションユーザインターフェース７０６上に重ねられたプレビュー領域７１２）を表示することと、入力の第１の部分の検出後に入力の第２の部分を検出することと、接触による入力の第２の部分の検出に応じて、入力の第２の部分がユーザインターフェース入れ替え基準を満たすとの判定に従って、第１のユーザインターフェースの表示を第１のユーザインターフェースとは異なる第２のユーザインターフェースと入れ替えることと（例えば、接触の強度７０５が強度閾値ＩＨに達することに応じて、メールアプリケーションユーザインターフェース７０６はプレビュー領域７１２とともに、図７Ｉに示すブラウザアプリケーションユーザインターフェース７１０と入れ替えられる）、を含む。
【０３８１】
一部の実施形態では、プレビュー動作の開始後は、プレビュー動作は、第１のソフトウェアアプリケーションから独立して実行される（１１５８）（例えば、図１１Ａに示すように、アプリケーション専用モジュール２２０からプレビューコンテンツを受信した後は、プレビュー動作１１０６は、アプリケーション専用モジュール２２０から独立して実行される）。一部の実施形態では、プレビューコンテンツは、プレビュー動作の開始前に取得される（例えば、プレビューコンテンツは、図１１Ａの動作１１１２の前に取得される）。
【０３８２】
一部の実施形態では、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることに続いて検出されたタッチ感知面上の入力は、第１のソフトウェアアプリケーションを用いて処理される（１１６０）。例えば、図１１１７に示すように、図７Ｉのブラウザアプリケーションユーザインターフェース７１０などの第２のユーザインターフェースが表示された後で、制御は第１のソフトウェアアプリケーション（例えば、ブラウザモジュール１４７）に戻され、第１のソフトウェアアプリケーションは、（例えば、アプリケーションコア１（２３０−１）のみを使用すること、又は任意選択的に、アプリケーションコア１（２３０−１）をタッチ処理モジュール２２０と連動させて使用することによって）タッチ感知面上の続く入力を処理する。
【０３８３】
図１１Ｄにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１１Ｄに関して上記した方法１１５０にも、類似の様式で適用可能であることに留意されたい。例えば、方法１１５０を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１２００、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３８４】
図１２Ａ〜図１２Ｂは、一部の実施形態による、所定のデータ構造を使用してタッチ入力を処理する方法１２００を示すフロー図である。方法１２００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１２００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０３８５】
後述するように、方法１２００は、タッチ入力を所定のデータ構造で処理するための高度な方式を提供する。方法１２００は、タッチ入力を処理する際の効率を改善する。かかる方法及びインターフェースは、より効率的なヒト−マシンインターフェースを提供し、これにより全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０３８６】
デバイスは、ディスプレイ上に、ソフトウェアアプリケーションのユーザインターフェース（例えば、図７ＦＦのメールアプリケーションユーザインターフェース７０６）を表示する（１２０２）。
【０３８７】
デバイスは、ディスプレイ上でソフトウェアアプリケーションのユーザインターフェースを表示している間に、ソフトウェアアプリケーションのユーザインターフェースに対応する場所におけるタッチ感知面上の入力（例えば、図７ＦＦの入力７１３）を検出する（１２０４）。
【０３８８】
デバイスは、入力の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力に対応する強度情報を送信する（１２０６）（例えば、図７ＦＦに示すように、アプリケーション非依存モジュール２２０は、イベントオブジェクト１９４をアプリケーション専用モジュール２３０に送信する）。強度情報は、１つ以上のセンサに割り当てられた基準強度（例えば、基準強度７２０８）、及び検出された（例えば、測定された）入力の強度に対応する特性強度（例えば、特性強度７２０６）を含む。一部の実施形態では、アプリケーション非依存の命令セットは、アプリケーション非依存のソフトウェアエンティティ（例えば、図１Ｃのタッチ処理モジュール２２０）である。
【０３８９】
一部の実施形態では、特性強度は、感度値（例えば、図７ＦＦの感度７２１０）によって更に調節される（１２０８）。一部の実施形態では、特性強度は感度値を含む（例えば、特性強度に感度値が乗算されている）。例えば（基準強度が１００ｇであるとき）、１ｘ感度では、１００ｇの強度は１．０の正規化された強度に等しく、２ｘ強度では、５０ｇの強度は１．０の正規化された強度に等しい。これに対して、１ｘ強度では、５０ｇの強度は０．５の正規化された強度に等しい。
【０３９０】
一部の実施形態では、入力の特性強度は、基準強度に基づいて正規化される正規化された強度値である（１２１０）（例えば、正規化された強度１．０＝特性強度１００ｇ／基準強度１００ｇ）。
【０３９１】
一部の実施形態では、強度情報は、強度に基づく基準（例えば、測定された接触強度）と強度に基づかない基準（例えば、接触の移動、接触の持続時間、接触の場所、など）の組合せに基づく１つ以上のヒューリスティックによって判定される強度状態情報を含む（１２１２）。例えば、強度状態を判定するための閾値は、接触の移動、接触の持続時間、及び接触の場所に応じて変動する。一部の実施形態では、強度状態のうちの１つ以上は、（例えば、方法１５００及び１６００を参照して以下でより詳細に記載されるように）動的に判定された強度状態を含む。
【０３９２】
一部の実施形態では、強度状態情報は、現在の強度状態がジェスチャレコグナイザに関する強度状態要件（例えば、方法１４００を参照して以下に記載されるような、ジェスチャの第１のクラス中の第１のジェスチャに関する、第三者アプリケーションによって指定された強度基準）に適合するか否かに関するデバイスからの指示に基づいて、提供される（１２１４）。
【０３９３】
一部の実施形態では、強度情報は、複数の異なる利用可能な状態値（例えば、力不在状態、ヒント／リビール状態、ピーク／プレビュー状態、ポップ／コミット状態）を有する強度状態情報を含み、強度状態間の遷移が、オペレーティングシステム駆動ユーザ対話（例えば、ピークアンドポップメニュー、クイックアクションメニューなど）をトリガするために、オペレーティングシステムの全体にわたって使用される（１２１６）。
【０３９４】
一部の実施形態では、入力の特性強度は、タッチイベントに対応する接触の特性強度を各々含む１つ以上のタッチイベント（例えば、図７ＩＩでは、２つのイベントオブジェクト１９４及び７１９４が提供される）を介して提供される（１２１８）。一部の実施形態では、タッチイベントは、ビューに関連付けられたジェスチャレコグナイザがジェスチャを認識した後で、そのビューに配信される。例えば、ジェスチャレコグナイザがジェスチャを認識した後で配信されるタッチイベントは、強度情報を含む。一部の実施形態では、タッチイベントはジェスチャレコグナイザに関連付けられていないビューに配信され、そのビューに対応するアプリケーションによって、それらのタッチイベントに基づいて、動作（例えば、ジェスチャにおける接触のうちの１つ以上の強度に基づいて決定される厚さを有する線を引くこと）が実行される。
【０３９５】
一部の実施形態では、デバイスは、ディスプレイ上で、複数の強度感度設定の間でそれぞれの強度感度設定を選択するための感度コントロール（例えば、複数の強度感度設定を有する図７ＧＧの領域７２０又は図７ＨＨの領域７２２）を表示し（１２２０）、感度コントロールの表示中に、複数の強度感度設定のうちのそれぞれの強度感度設定の選択に対応するユーザ入力を受信し、それぞれの強度感度設定の選択に対応するユーザ入力を受信することに応じて、複数の続く入力に関する特性強度値をユーザが選択したそれぞれの強度感度設定に対応するそれぞれの感度値によって調節する。例えば、強度感度設定はすべての入力に関して、入力を解釈しているアプリケーションを変更することなくユーザによって調節可能であるが、その理由は、入力値が、これらがアプリケーションに配信される前に（例えば、同じアプリケーション非依存モジュール２２０によって）調節されるからである。
【０３９６】
図１２Ａ〜図１２Ｂにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１３００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１２Ａ〜図１２Ｂに関して上記した方法１２００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１２００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１３００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０３９７】
図１３Ａ〜図１３Ｂは、一部の実施形態による、力ジェスチャ進度インジケータを使用してタッチ入力を処理する方法を示すフロー図である。方法１３００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１３００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０３９８】
方法１３００は、タッチ入力を力ジェスチャ進度インジケータで処理するための高度な方式を提供する。方法１３００は、タッチ入力を処理する際の効率を改善する。かかる方法及びインターフェースは、より効率的なヒト−マシンインターフェースを提供し、これにより全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０３９９】
デバイスは、ディスプレイ上に、ソフトウェアアプリケーションの第１のユーザインターフェース（例えば、図７Ａのメールアプリケーションユーザインターフェース７０６）を表示する（１３０２）。
【０４００】
デバイスは、ソフトウェアアプリケーションの第１のユーザインターフェースの表示中に、タッチ感知面上の入力（例えば、図７Ａのフォーカスセレクタ７０５）を検出する（１３０４）。
【０４０１】
デバイスは、入力の検出中に、入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに、入力の強度の変化を表す第１の進度インジケータの値を提供し（例えば、図７ＦＦに示すような、アプリケーション非依存モジュール２２０からアプリケーション専用モジュール２３０に送達されるイベントオブジェクト１９４）、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第１の進度インジケータ（例えば、図７Ｄの進度インジケータ７５０）の値に従って、第１のユーザインターフェースを更新する（１３０６）（例えば、第１のユーザインターフェースは、例えば図７Ｄに示すような視覚的区別を示すために、図７ＦＦのアプリケーション専用モジュール２３０を使用して更新される）。一部の実施形態では、方法は、第１の進度インジケータの値をモニタすることと、第１の進度インジケータの変化に応じて第１の進度インジケータの値に基づいて第１のユーザインターフェースを更新することと、を含む。一部の実施形態では、ソフトウェアアプリケーション中の命令セットは、アプリケーション専用命令である。
【０４０２】
一部の実施形態では、第１の進度インジケータの値は、第１の最初の状態（例えば、ヒント／リビール強度状態）と第１の最終状態（例えば、ピーク／プレビュー強度状態）との間の入力の状態を示す正規化値である（１３０８）。例えば、第１の進度インジケータは０〜１の値を有し、この場合、０は最初の状態（例えば、図７Ｃに示すようなヒント／リビール強度状態の始まりなどの、最初の強度）を表し、１は最後の状態（例えば、図７Ｇに示すようなピーク／プレビュー強度状態などの、最終又は標的強度、）を表す。
【０４０３】
一部の実施形態では、第１の最初の状態及び第１の最終状態は、ソフトウェアアプリケーション（例えば、図１Ｃのアプリケーション１（１３６−１））によって指定される（１３１０）。一部の実施形態では、アプリケーション１（１３６−１）のアプリケーションコア１（２３０−１）は、第１の最初の状態及び第１の最終状態を指定する（例えば、ソフトウェアアプリケーションは、第１の最終状態がピーク／プレビュー強度状態に対応するかそれともポップ／コミット強度状態に対応するかを指定する。
【０４０４】
一部の実施形態では、異なる状態間の進度は、強度に基づく基準（例えば、測定された接触強度）と強度に基づかない基準（例えば、接触の移動、接触の持続時間、接触の場所、など）の組合せに基づく１つ以上のヒューリスティックによって判定される（１３１２）。一部の実施形態では、強度状態のうちの１つ以上は、（例えば、方法１５００及び１６００を参照して以下でより詳細に記載されるように）動的に判定された強度状態である。
【０４０５】
一部の実施形態では、状態は、デバイスのオペレーティングシステムによって提供される状態値（例えば、力不在状態、ヒント／リビール状態、ピーク／プレビュー状態、ポップ／コミット状態）のセットから選択され、これらの状態間の遷移が、オペレーティングシステム駆動ユーザ対話（例えば、ピークアンドポップメニュー、クイックアクションメニューなど）をトリガするために、オペレーティングシステムの全体にわたって使用される（１３１４）。
【０４０６】
一部の実施形態では、デバイスは、入力の検出中に、第１の最終状態を超える（又は第１の最終状態への）入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに、入力の変化を表す第２の進度インジケータ（例えば、図７Ｇの第２の進度インジケータ７５２）の値を提供する（１３１６）。第２の進度インジケータの値は、第２の最初の状態と第２の最終状態との間の（例えば、ピーク／プレビュー強度状態とポップ／コミット強度状態との間の）入力の状態を示す正規化値である。デバイスは、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第２の進度インジケータの値に従って、第１のユーザインターフェースを更新する。一部の実施形態では、第２の最初の状態は、第１の最終状態に対応する。これにより、デバイスが入力の強度の変化を、第１の最初の状態から第２の最終状態まで間を開けず連続的にモニタすることが可能になる。
【０４０７】
一部の実施形態では、ソフトウェアアプリケーション中の命令セット及び第２の進度インジケータの値に従って第１のユーザインターフェースを更新することは、第１のユーザインターフェースを第２のユーザインターフェースと入れ替えることを含む（１３１８）（例えば、図７Ｉでは、第２の進度インジケータ７５２が第２の最終状態に達するとき、メールアプリケーションユーザインターフェース７０６はブラウザアプリケーションユーザインターフェース７１０と入れ替えられる）。
【０４０８】
一部の実施形態では、ソフトウェアアプリケーション中の命令セットは、（１３２０）入力の強度の変化を図式的に表すカスタマイズされたアニメーションを提供するように構成される。一部の実施形態では、ソフトウェアアプリケーション中の命令セットは、入力の開始を図式的に表すカスタマイズされたアニメーションを提供するように構成される。例えば、ソフトウェアアプリケーション中の命令セットは、第１のユーザインターフェースの少なくとも一部を不鮮明にするために使用される。一部の実施形態では、ソフトウェアアプリケーション中の命令セットは、入力の完了（例えば、入力が最終状態に達する）を図式的に表すカスタマイズされたアニメーションを提供するように構成される。例えば、ソフトウェアアプリケーション中の命令セットは、プレビューウィンドウを表示するために使用される。一部の実施形態では、プレビューウィンドウはカスタマイズされたアニメーション中では、矩形でない形状（例えば、円形）を有する。カスタマイズされたアニメーションの使用により、デバイスがアプリケーション非依存モジュール２２０によって事前に規定されていないアニメーションを提供することが可能になる。
【０４０９】
一部の実施形態では、デバイスは、入力の検出中に、入力が第１の強度基準（例えば、第１の最初の状態）を満足することを検出することに応じて、第１の進度インジケータの値が（第１の最初の状態と第１の最終状態との間の）入力の強度の変化を表すように、第１の進度インジケータを開始する（１３２２）。例えば、図７Ｂ〜図７Ｃでは、第１の進度インジケータ７５０は、入力が強度閾値ＩＬに達するときにだけ開始される。これにより、第１の進度インジケータが必要とされないときに（例えば、入力の強度が第１の進度インジケータによって表される強度範囲を下回るときに）第１の進度インジケータを更新及び追跡することが回避される。
【０４１０】
図１３Ａ〜図１３Ｂにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１４００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１３Ａ〜図１３Ｂに関して上記した方法１３００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１３００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１４００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０４１１】
図１４Ａ〜図１４Ｃは、一部の実施形態による、第三者アプリケーションによって指定された強度基準に基づいてタッチ入力を処理する方法を示すフロー図である。方法１４００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１４００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０４１２】
後述するように、方法１４００は、タッチ入力を動的閾値で処理するための高度な方式を提供する。方法１４００は、タッチ入力を処理する際の効率を改善する。不要な／無関係の／重複する入力を低減することにより、かかる方法及びインターフェースはより効率的なヒト−マシンインターフェースを提供し、これにより、全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０４１３】
デバイスは、ディスプレイ上に、オペレーティングシステム内で実行される第１の第三者アプリケーションのユーザインターフェース（例えば、図７ＪＪのメールアプリケーションユーザインターフェース７０６）を表示する（１４０２）。デバイスの機能は、オペレーティングシステムのオペレーティングシステムフレームワーク（例えば、ＵＩ  Ｋｉｔ中のＴｏｕｃｈ  Ｅｖｅｎｔ  ＡＰＩ）を通して、第１の第三者アプリケーションに曝される。例えば、第１の第三者アプリケーションに、利用可能なジェスチャクラスについての情報が提供される。オペレーティングシステムフレームワークは、デバイスが認識できる複数のジェスチャクラスを定義する。第１のジェスチャクラスは、第１のジェスチャ認識基準が満たされるときに、タッチ感知面上で検出された入力を第１のジェスチャとして認識するための、第１のジェスチャ認識基準に関連付けられている。第１の第三者アプリケーションは、第１の動作に関して、ユーザインターフェースの第１の部分を、第１のジェスチャクラスからの第１のジェスチャ（例えば、第１のピンチジェスチャレコグナイザ（Ｎ１））に関連付けている。第１の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定している。一部の実施形態では、第１のジェスチャ認識基準及び第１の強度基準の両方が満足されるとき、第１の動作が実行される。
【０４１４】
一部の実施形態では、第１の強度基準は、強度閾値（例えば、図７ＪＪの強度閾値Ｉ１）を含む（１４０４）。例えば、第１の強度基準は、入力の強度が強度閾値に達するとき（少なくとも部分的に）満足される。
【０４１５】
一部の実施形態では、強度閾値は、所定の閾値のセットから選択される（１４０６）（例えば、強度閾値は、ヒント／リビール閾値、ピーク／プレビュー閾値、及びポップ／コミット閾値などの所定の閾値、又は１００ｇ、２００ｇ、及び３００ｇなどのこれらの対応する強度値のセットから選択される）。
【０４１６】
一部の実施形態では、強度閾値は、デバイスが検出可能な値の範囲から選択される（１４０８）（例えば、一部の実施形態では、強度閾値は、１ｇ、１０ｇ、１００ｇ、４５０ｇなどのような、１ｇ〜５００ｇの任意の値とすることができる）。
【０４１７】
一部の実施形態では、第１の強度基準は、経時的な強度の変化の比率、複数の接触の強度、入力の持続時間、入力がタッチ感知面にわたって移動した距離、入力における接触の回数、入力の移動の方向、入力における接触のタッチダウンの相対的タイミング、入力における接触の動き、などを含む。一部の実施形態では、第１の強度基準は、（例えば、方法１５００及び１６００を参照して以下でより詳細に記載されるように）動的な強度閾値を含む。
【０４１８】
ディスプレイ上で第１の第三者アプリケーションのユーザインターフェースを表示している間に、デバイスは、第１の第三者アプリケーションのユーザインターフェースの第１の部分に対応する場所におけるタッチ感知面上の入力（例えば、図７ＪＪのフォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャ）を検出する（１４１０）。
【０４１９】
入力の検出に応じて、デバイスは、入力が第１のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第１の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第１の動作を実行し（１４１２）（例えば、図７ＪＪ〜図７ＫＫでは、メールアプリケーションユーザインターフェース７０６は、フォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャが強度閾値Ｉ１を満足するとき、メールアプリケーションユーザインターフェース７２４と入れ替えられる）、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第１の動作の実行を取り止める（１４１４）（例えば、図７ＬＬでは、メールアプリケーションユーザインターフェース７０６は、フォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャが強度閾値Ｉ１を満足しないとき、メールアプリケーションユーザインターフェース７２４と入れ替えられないが、任意選択的に、強度に基づかないデピンチジェスチャに関連付けられたズームイン動作が、フォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャに応じて実行される）。
【０４２０】
一部の実施形態では、第１の第三者アプリケーションは、第２の動作に関して、ユーザインターフェースの第１の部分を第１のジェスチャクラスからの第１のジェスチャに関連付けている（１４１６、図１４Ｂ）（例えば、強度に基づかないピンチジェスチャレコグナイザは、ズームイン／ズームアウト動作に対して関連付けられている）。第１の第三者アプリケーションは、第２の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定していない。一部の実施形態では、第１の第三者アプリケーションは、第２の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関するどのような強度基準も指定していない。入力の検出に応じて、デバイスは、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第２の動作を実行し（例えば、図７ＬＬでは、フォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャが強度閾値Ｉ１を満足しないとき、メールアプリケーションユーザインターフェース７０６はズームインされる）、入力が第１のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第１の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第２の動作の実行を取り止める（例えば、図７ＫＫでは、フォーカスセレクタ７１５及び７１７によって表されるデピンチジェスチャが強度閾値Ｉ１を満足するとき、メールアプリケーションユーザインターフェース７２４はズームインされない）。
【０４２１】
一部の実施形態では、第２のジェスチャクラスは、第２のジェスチャ認識基準が満たされるときに、タッチ感知面上で検出された入力を第２のジェスチャとして認識するための、第２のジェスチャ認識基準に関連付けられている（１４１８）。第１の第三者アプリケーションは、ユーザインターフェースの第１の部分を第３の動作に関する第２のジェスチャクラスからの第２のジェスチャに関連付けている（例えば、図７ＭＭでは、２指パンジェスチャレコグナイザ（２Ｓ）は、メールアプリケーションユーザインターフェース７０６の第１の部分に関連付けられている）。第１の第三者アプリケーションは、第３の動作に関するユーザインターフェースの第１の部分に関連付けられた第２のジェスチャに関する第２の強度基準（例えば、強度閾値Ｉ２）を指定している。入力の検出に応じて、デバイスは、入力が第２のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第２の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第３の動作を実行し（例えば、図７ＮＮに示すように、メールアプリケーションユーザインターフェース７０６上のリンクされたウェブサイトのレビューを示すレビューウィンドウ７２６を表示すること）、入力が第２のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第２の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第３の動作の実行を取り止める（例えば、入力が強度閾値Ｉ２を満たさないとき、レビューウィンドウ７２６は表示されない）。
【０４２２】
一部の実施形態では、デバイスは、ディスプレイ上で、オペレーティングシステム内で実行されかつ第１の第三者アプリケーションとは異なる第２の第三者アプリケーション（例えば、図１Ａのブラウザモジュール１４７）のユーザインターフェースを表示する（１４２０、図１４Ｃ）。第２の第三者アプリケーションは、第１の動作に関して、第２の第三者アプリケーションのユーザインターフェースの第２の部分を第１のジェスチャクラスからの第１のジェスチャに関連付けている（例えば、ブラウザアプリケーションユーザインターフェース７１０のアドレスウィンドウは、ブラウザアプリケーションユーザインターフェース７１０を図７ＰＰに示すタブ管理ビュー７２８と入れ替えるための第３のピンチジェスチャレコグナイザ（Ｎ３）に関連付けられている）。第２の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第２の部分に関連付けられた第１のジェスチャに関する第３の強度基準（例えば、図７ＰＰの強度閾値Ｉ３）を指定している。第３の強度基準は第１の強度基準とは異なる（及び、任意選択的に、第３の強度基準は第２の強度基準とは異なる）。ディスプレイ上で第２の第三者アプリケーションのユーザインターフェースを表示している間に、デバイスは、第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所におけるタッチ感知面上の入力を検出する（例えば、図７ＯＯでは、フォーカスセレクタ７２３及び７２５によって表されるデピンチジェスチャが、ブラウザアプリケーションユーザインターフェース７１０のアドレスウィンドウ上で検出される）。第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所における入力の検出に応じて、デバイスは、第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所における入力が第１のジェスチャ認識基準を満たすとの及び入力が第２の第三者アプリケーションによって指定された第３の強度基準を満たすとの判定に従って、第２の第三者アプリケーションのユーザインターフェースの第２の部分に関連付けられた第１の動作を実行し（例えば、ブラウザアプリケーションユーザインターフェース７１０は、図７ＰＰに示すようなタブ管理ビュー７２８と入れ替えられる）、第２の第三者アプリケーションのユーザインターフェースのこの部分に対応する場所における入力が第１のジェスチャ認識基準を満たすが第２の第三者アプリケーションによって指定された第３の強度基準は満たさないとの判定に従って、第２の第三者アプリケーションのユーザインターフェースの第２の部分に関連付けられた第１の動作の実行を取り止める。例えば、フォーカスセレクタ７２３及び７２５によって表されるデピンチジェスチャの強度が強度閾値Ｉ３を下回っているとき、図７ＱＱに示すように、アクションは実行されない（例えば、図７ＰＰに示すタブ管理ビュー７２８は表示されない）。
【０４２３】
図１４Ａ〜図１４Ｂにおける動作について記載された特定の順序は単なる例示であり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１５００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１４Ａ〜図１４Ｂに関して上記した方法１４００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１４００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１５００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０４２４】
１５Ａ〜図１５Ｂは、一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法を示すフロー図である。方法１５００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１５００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０４２５】
後述するように、方法１５００は、タッチ入力を動的閾値で処理するための高度な方式を提供する。方法１５００は、タッチ入力を処理する際の効率を改善する。不要な／無関係の／重複する入力を低減することにより、かかる方法及びインターフェースはより効率的なヒト−マシンインターフェースを提供し、これにより、全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０４２６】
デバイスは、ディスプレイ上に、ユーザインターフェース（例えば、図７ＲＲのメールアプリケーションユーザインターフェース７０６）を表示する（１５０２）。
【０４２７】
ユーザインターフェースの表示中に、デバイスは、タッチ感知面上の入力（例えば、図７ＲＲのフォーカスセレクタ７２７）を検出する（１５０４）。
【０４２８】
第１のユーザインターフェースの表示中に入力を検出することに応じて、入力の検出中に、デバイスは、入力が第１のタイミング基準及び第１の強度入力基準を満足するとの判定に従って、第１の動作（例えば、図７ＳＳに示すように、ユーザインターフェースオブジェクト７０８を視覚的に区別すること）を実行する（１５０６）。第１のタイミング基準は、第１の時間期間が経過する間（例えば、図７ＳＳに示すような、時間７１２４において終わる時間期間ｐ１を通して）入力がタッチ感知面上に留まることを要求する。第１の強度入力基準は、第１の時間期間の終わりに又はこれに続いて（例えば、第１の時間期間に続く又はこれの終わりの時間において）、入力が第１の強度閾値（例えば、図７ＳＳに示すような強度閾値ＩＬ）を満足することを要求する。
【０４２９】
一部の実施形態では、第１の時間期間は、タッチ感知面上の入力の検出に応じて始まる（１５０８）（例えば、図７ＳＳでは、時間期間ｐ１はフォーカスセレクタ７２７の最初の検出から始まる）。
【０４３０】
一部の実施形態では、入力の検出中に、デバイスは、入力の強度が基準強度閾値を下回って減少したとの判定に従って、第１の時間期間をリセットする（１５１０）（例えば、図７ＵＵに示すように、入力の強度が基準強度閾値ＩＲを下回って減少するとき、第１の時間期間は、入力の強度が基準強度閾値ＩＲを下回って降下した時間７１４６から再開する）。一部の実施形態では、基準強度閾値は、所定の検出時間期間中に検出された最大強度、及び、図７ＵＵのＩｍａｒｇｉｎなどの強度減少マージン（例えば、１０ｇ、２０ｇ、３０ｇ、又は４０ｇなどの固定されたマージン、又は接触の最大強度の５％、１０％、２０％、又は３０％などの動的なマージン）に基づいて決定される。一部の実施形態では、基準強度閾値は、時間期間が始まって以降に（例えば、入力が検出された瞬間以降に、又は最後に時間期間が再開した時間以降に）検出された最大強度、及び強度減少マージンに基づいて決定される。例えば、基準強度閾値は、最大検出強度から強度減少マージン（例えば、図７ＵＵのＩｍａｒｇｉｎ）を減算したものに相当する。一部の実施形態では、基準強度閾値は、入力が検出される間継続して更新される（例えば、図７ＶＶに示すように、基準強度閾値は、入力の強度の変化に基づいて更新される）。
【０４３１】
一部の実施形態では、入力の検出中に、デバイスは、入力の強度が基準強度閾値を下回って減少したとの判定に従って、基準強度閾値をリセットする（１５１２）（例えば、図７ＶＶでは、入力の強度が第１の基準強度ＩＲ１を下回って減少するとき、基準強度は第２の基準強度ＩＲ２にリセットされる）。一部の実施形態では、基準強度閾値は、基準強度閾値がリセットされるときに検出された入力の強度に基づいて変更される（例えば、第２の基準強度ＩＲ２は、基準強度閾値がリセットされるときの入力の強度、ＩＲ１に基づいて決定される）。例えば、基準強度閾値は、基準強度閾値がリセットされるときに（又はその直前に）検出された入力の強度から、強度減少マージンを減算したものにリセットされる（例えば、図７ＶＶでは、第２の基準強度ＩＲ２は、第１の基準強度ＩＲ１から強度マージンＩｍａｒｇｉｎを減算したものである）。
【０４３２】
一部の実施形態では、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１のタイミング基準及び／又は第１の強度入力基準を満足しないとの判定に従って、デバイスは第１の動作を取り止める（１５１４）（例えば、入力が図７ＲＲの強度パターン７１３０又は強度パターン７１３２に従うとき、図７ＳＳに示すようなユーザインターフェースオブジェクト７０８を視覚的に区別することなどの第１の動作は実行されない）。
【０４３３】
一部の実施形態では、第１のユーザインターフェースの表示中に入力を検出することに応じて、デバイスは、入力が第２のタイミング基準及び第２の強度入力基準を満足するとの判定に従って、第１の動作とは異なる第２の動作を実行する（１５１６、図１５Ｂ）（例えば、図５ＴＴに示すように、入力が、時間７１３６において終わる時間期間ｐ２に基づく第２のタイミング基準及び強度閾値ＩＭに基づく第２の強度入力基準を満足するとき、プレビュー領域７１２が表示される）。第２のタイミング基準は、第２の時間期間が経過する間、入力がタッチ感知面上に留まることを要求する。一部の実施形態では、第２の時間期間は第１の時間期間と同一である。一部の実施形態では、第２の時間期間は第１の時間期間とは異なる。第２の強度入力基準は、第２の時間期間の終わりに又はこれに続いて（例えば、第２の時間期間に続く又はこれの終わりの時間において）、入力が第１の強度閾値とは異なる第２の強度閾値（例えば、第２の強度閾値は第１の強度閾値よりも高い）を満足することを要求する。
【０４３４】
一部の実施形態では、デバイスは、入力の検出に応じて及び入力が第１のタイミング基準及び第１の入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣに関して上記したリビールジェスチャレコグナイザ（Ｒ））を用いて入力を処理することを含め、第１の動作を実行し、入力の検出に応じて及び入力が第２のタイミング基準及び第２の強度入力基準を満足するとの判定に従って、第２のジェスチャレコグナイザ（例えば、図７Ａ〜図７ＣＣに関して上記したリビールジェスチャレコグナイザ（Ｒ））を用いて入力を処理することを含め、第２の動作を実行する（１５１８）。一部の実施形態では、第２のジェスチャレコグナイザを用いて入力を処理することは、第１のジェスチャレコグナイザを失敗した状態に置くことを含む。
【０４３５】
一部の実施形態では、第１のジェスチャレコグナイザを用いて入力を処理することにより、タップジェスチャレコグナイザを中止された状態に置くことが開始される。一部の実施形態では、タップジェスチャレコグナイザを用いて入力を処理することにより、第１のジェスチャレコグナイザを中止された状態に置くことが開始される。一部の実施形態では、長い押圧ジェスチャレコグナイザを用いて入力を処理することにより、第１のジェスチャレコグナイザを中止された状態に置くことが開始される。
【０４３６】
一部の実施形態では、デバイスは入力の終わりを検出し（１５２０）（例えば、タッチ感知面からの入力に対応する接触のリフトオフを検出する）、入力の終わりの検出に応じて、入力が第１のタイミング基準とは（及び第２のタイミング基準とは）異なる第３のタイミング基準を満足するとの判定に従って、第１の動作とは（及び第２の動作とは）異なる第３の動作を実行する。例えば、デバイスが素早いタップ入力（例えば、図７ＲＲの入力パターン７１３２に従う入力）を検出する場合、そのタップ入力が第１の強度閾値を満足する場合であっても、デバイスは、第１の強度閾値に関連付けられる（例えば、マッピングされる又は割り当てられる）動作を実行するのではなく、そのタップ入力に関連付けられる（例えば、マッピングされる又は割り当てられる）動作を実行する（例えば、図７Ｂに示すブラウザアプリケーションユーザインターフェース７１０を表示する）。
【０４３７】
一部の実施形態では、入力の終わりの検出に応じて、入力が第３のタイミング基準又は第１のタイミング基準を満足しないとの判定に従って、デバイスはどのような動作の実行も取り止める（１５２２）。例えば、デバイスが、第３のタイミング基準よりも長くかつ第１の強度閾値を満足するが第１のタイミング基準は満足しない、長い接触（例えば、図７ＲＲの入力パターン７１３１に従う入力）を検出する場合、デバイスは、タップ入力に関連付けられる（例えば、マッピングされる若しくは割り当てられる）動作又は第１の強度閾値に関連付けられる（例えば、マッピングされる若しくは割り当てられる）動作のいずれも、実行しない。
【０４３８】
図１５Ａ〜図１５Ｂにおける動作について記載された特定の順序は単なる例示あり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１４００、及び１６００）に関して本明細書に記載される他のプロセスの詳細はまた、図１５Ａ〜図１５Ｂに関して上記した方法１５００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１５００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１４００、及び１６００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０４３９】
図１６Ａ〜図１６Ｂは、一部の実施形態による、動的閾値に基づいてタッチ入力を処理する方法１６００を示すフロー図である。方法１６００は、ディスプレイ、タッチ感知面、及びタッチ感知面との接触の強度を検出するための１つ以上のセンサを備える電子デバイス（例えば、デバイス３００、図３、又はポータブル多機能デバイス１００、図１Ａ）において実行される。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチ感知面がディスプレイ上にあるか又はこれに組み込まれている。一部の実施形態では、ディスプレイはタッチ感知面とは別個である。方法１６００の一部の動作が任意選択的に組み合わされ、かつ／又は、一部の動作の順序が任意選択的に変更される。
【０４４０】
後述するように、方法１６００は、タッチ入力を動的閾値で処理するための高度な方式を提供する。方法１６００は、タッチ入力を処理する際の効率を改善する。不要な／無関係の／重複する入力を低減することにより、かかる方法及びインターフェースはより効率的なヒト−マシンインターフェースを提供し、これにより、全体的な動作時間及びユーザエクスペリエンスが改善される。バッテリ動作デバイスの場合、かかる方法及びインターフェースにより、バッテリ電力を節約し、バッテリの充電の間の時間を増やす。
【０４４１】
デバイスは、ディスプレイ上に、ユーザインターフェース（例えば、図７ＷＷのメールアプリケーションユーザインターフェース７０６）を表示する（１６０２）。
【０４４２】
ユーザインターフェースの表示中に、デバイスは、タッチ感知面上の入力（例えば、図７ＷＷのフォーカスセレクタ７２９）を検出する（１６０４）。
【０４４３】
第１のユーザインターフェースの表示中に入力を検出することに応じて、入力の検出中に、入力がアクティブ化強度閾値を満足するとの判定に従って、デバイスは第１の動作を実行する（１６０６）（例えば、入力７１５６の強度が第１の強度閾値成分７１５４を超えるとき、メールアプリケーションユーザインターフェース７０６は、ブラウザアプリケーションユーザインターフェース７１０と入れ替えられる）。アクティブ化強度閾値は、第１の強度値（例えば、最初の強度閾値ＩＨ）から経時的に減少する、第１の強度閾値成分（例えば、図７ＷＷの第１の強度閾値成分７１５４）を含む。
【０４４４】
一部の実施形態では、アクティブ化強度閾値は、入力の強度に遅れて従う第２の強度閾値成分（例えば、図７ＹＹの第２の強度閾値成分７１６８）を含む（１６０８）。一部の実施形態では、第２の強度閾値成分は、入力の強度にローパスフィルタを適用することによって取得される。
【０４４５】
一部の実施形態では、アクティブ化強度閾値は、第１の強度閾値成分と第２の強度閾値成分の和である（１６１０）（例えば、図７ＹＹでは、アクティブ化強度閾値７１７０は、第１の強度閾値成分７１５４と第２の強度閾値成分７１６８の和である）。一部の実施形態では、アクティブ化強度閾値は、これが最小アクティブ化強度閾値以上となるようにして設定される（例えば、図７ＢＢＢに示すように、アクティブ化強度閾値７１８０はベースライン閾値７１８２以上である）。
【０４４６】
一部の実施形態では、第１の強度閾値成分は、入力が検出される瞬間から所定の時間間隔後に減少する（１６１２）（例えば、図７ＷＷでは、第１の強度閾値成分７１５４は、入力が最初に検出されるときから所定の時間間隔ｐ３後に減少する）。
【０４４７】
一部の実施形態では、第１の強度閾値成分が基準強度閾値を下回っていないとの判定に従って、第１の強度閾値成分は、所定の時間間隔後に（例えば、図７ＷＷに示すように入力が検出される瞬間から、又はピーク動作が実行された瞬間から）減少する減衰曲線に従い、また、第１の強度閾値成分が基準強度閾値を下回っているとの判定に従って、第１の強度閾値成分は、所定の時間間隔を参照せずに決定される時間において始まる減少する減衰曲線に従う（１６１４）（例えば、図７ＸＸに示すように、第１の強度閾値成分７１６４は、入力の強度が基準強度閾値ＩＲを下回って降下するとき減衰し始める）。一部の実施形態では、基準強度閾値は、所定の検出時間期間中に検出された最大強度及び強度減少マージンに基づいて決定される。一部の実施形態では、基準強度閾値は、入力が検出される瞬間以降に検出された最大強度及び強度減少マージンに基づいて決定される。例えば、基準強度閾値は、最大検出強度から強度減少マージンを減算したものに相当する。一部の実施形態では、基準強度閾値は、入力が検出される間継続して更新される。
【０４４８】
一部の実施形態では、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力の検出中に、入力が第１のタイミング基準及び第１の強度入力基準を満足するとの判定に従って、デバイスは第２の動作（例えば、ピーク／プレビュー動作）を実行する（１６１６、図１６Ｂ）。例えば、図１６Ｂに示すように、入力７１７２が時間７１２４において第１のタイミング基準及び第１の強度入力基準を満足するとき、第１の動作（例えば、図７Ｇ〜図７Ｉに示すように、メールアプリケーションユーザインターフェース７０６をブラウザアプリケーションユーザインターフェース７１０と入れ替えること）を実行する前に、第２の動作（例えば、図７Ｇに示すように、プレビュー領域７１２を表示すること）が実行される。第１のタイミング基準は、第１の時間期間が経過する間、入力がタッチ感知面上に留まることを要求する。第１の強度入力基準は、第１の時間期間の終わりに又はこれに続いて（例えば、第１の時間期間に続く又はこれの終わりの時間において）、入力が第１の強度閾値を満足することを要求する。
【０４４９】
一部の実施形態では、第１の強度閾値成分は、入力が第１のタイミング基準及び第１の強度入力基準を満足する瞬間から所定の時間間隔後に減少する減衰曲線に従う（１６１８）。例えば、図７ＺＺに示すように、アクティブ化強度閾値７１７４中の第１の強度閾値成分の減衰は時間７１７６に始まり、この時間は、入力が第１のタイミング基準及び第１の強度入力基準を満足する時間７１２４後の所定の時間間隔ｐ３に相当する。
【０４５０】
一部の実施形態では、入力は、強度の第１の増大及び強度の第１の増大に続く強度の第２の増大、並びに強度の第１の増大と強度の第２の増大との間の強度の減少を含む連続的なジェスチャであり（例えば、図７ＡＡＡでは、入力７１７８は、入力７１７８を解放しない状態での、ＩＬ未満からＩＭ超への強度の第１の増大、続くＩＭ超からＩＬ未満への強度の減少、続くＩＬ未満からＩＬ超（及びＩＭ超）への強度の第２の増大を含む）、このとき入力は、強度の第１の増大と強度の第２の増大との間はタッチ感知面と接触したままである（１６２０）。デバイスは、入力の強度の第１の増大の検出に応じて、第２の動作を実行し（例えば、入力７１７８は、時間７１２４において第１のタイミング基準及び第１の強度入力基準を満足し、図７Ｇに示すようにプレビュー領域７１２を表示することなどの、第２の動作を開始する）、入力の強度の第２の増大の検出に応じて、第１の動作を実行する（例えば、入力７１７８は、時間７１７９においてアクティブ化強度閾値７１８０を満足し、図７Ｇ〜図７Ｉに示すようにメールアプリケーションユーザインターフェース７０６をブラウザアプリケーションユーザインターフェース７１０と入れ替えることなどの、第１の動作開始する）。
【０４５１】
図１６Ａ〜図１６Ｂにおける動作について記載された特定の順序は単なる例示あり、記載された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で記載される動作の順序を変えるための様々な方法を認識するであろう。加えて、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１４００、及び１５００）に関して本明細書に記載される他のプロセスの詳細はまた、図１６Ａ〜図１６Ｂに関して上記した方法１６００にも、類似の様式で適用可能であることに留意されたい。例えば、方法１６００を参照して上記したタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションは、任意選択的に、本明細書に記載される他の方法（例えば、方法８００、９００、１０００、１１００、１１５０、１２００、１３００、１４００、及び１５００）を参照して本明細書に記載されるタッチ入力、ユーザインターフェースオブジェクト、強度閾値、及びアニメーションの特徴のうちの１つ以上を有する。簡潔にするために、これらの詳細は、ここでは繰り返さない。
【０４５２】
一部の実施形態によれば、図１７は、説明される様々な実施形態の原理に従って構成された、電子デバイス１７００の機能ブロック図を示す。デバイス１７００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図１７で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０４５３】
図１７に示すように、電子デバイス１７００は、１つ以上のユーザインターフェースを表示するように構成されたディスプレイユニット１７０２と、ユーザの入力を受けるように構成された、タッチ感知面ユニット１７０４と、タッチ感知面ユニット１７０４上の接触の強度を検出するように構成された１つ以上のセンサユニット１７０６と、ディスプレイユニット１７０２、タッチ感知面ユニット１７０４、及び１つ以上のセンサユニット１７０６に結合された、処理ユニット１７０８と、を含む。一部の実施形態では、処理ユニット１７０８は、表示可能化ユニット１７１０、入力評価ユニット１７１２、ジェスチャレコグナイザユニット１７１４、及び動作実行ユニット１７１６を含む。
【０４５４】
一部の実施形態では、電子デバイス１７００は、長い押圧ジェスチャと深い押圧入力との間の区別を行うように、並びに長い押圧ジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。かかる実施形態では、処理ユニット１７０８は、第１のユーザインターフェースの表示を可能にするように構成され、また処理ユニット１７０８は、第１のユーザインターフェースの表示を（例えば、表示可能化ユニット１７１０を用いて）可能にしている間にタッチ感知面ユニット上の入力を（例えば、入力評価ユニット１７１２を用いて）検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１の所定の時間期間の間第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を（例えば、動作実行ユニット１７１６を用いて）実行し、及び、入力が第１の所定の時間期間の間第１の強度閾値未満に留まることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作を（例えば、動作実行ユニット１７１６を用いて）実行する、ように更に構成されている。これらの実施形態の一部の実装形態では、第１のユーザインターフェースは第１のソフトウェアアプリケーションのユーザインターフェースであり、第１のユーザインターフェースは、（例えば、表示可能化ユニット１７１０及び／又は動作実行ユニット１７１６を用いた）プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられた第１のユーザインターフェースオブジェクトを含む、複数のユーザインターフェースオブジェクトを含む。一部の実施形態では、電子デバイス１７００は、図８Ａ〜図８Ｅを参照して上記した方法のいずれかを実行するように構成されている。
【０４５５】
一部の実施形態では、処理ユニット１７０８の入力評価ユニット１７１２は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分の検出を含め、タッチ感知面上の入力を検出するように、並びに、タッチ感知面上の入力の第１の部分を検出することに応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別するように、構成されており、ジェスチャレコグナイザの第１のセットは、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザを含む。更に、処理ユニット１７０８の動作実行ユニット１７１６は、タッチ感知面上の入力の第２の部分を検出することに応じて、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザを用いて入力を処理することを含む第１の動作を実行するように、及び、入力が長い押圧基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて入力を処理することを含む第２の動作を実行するように、構成されている。
【０４５６】
一部の実施形態では、第１のジェスチャレコグナイザは強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザは長い押圧ジェスチャレコグナイザである。
【０４５７】
一部の状況では、入力は、入力の第２の部分に続く入力の第３の部分を含み、また一部の実施形態では、動作実行ユニット１７１６は、第１のジェスチャレコグナイザを用いて入力の第３の部分を処理するように構成されている。
【０４５８】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第３のジェスチャレコグナイザを含む。
【０４５９】
一部の実施形態では、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることを含めて、第１のジェスチャレコグナイザを用いて入力を処理することように構成されている。
【０４６０】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは第４のジェスチャレコグナイザを含み、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第４のジェスチャレコグナイザを用いて入力を処理するように構成されている。
【０４６１】
一部の実施形態では、動作実行ユニット１７１６は、入力の第１の部分の検出に応じて、第３の動作を処理するように構成されている。更に、一部の実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別することを含む。また、一部のかかる実施形態では、動作実行ユニット１７１６は、第３の動作を実行することに続いて、入力が強度入力基準を満足するとの判定に従って、第１の動作を実行するように、及び、第３の動作を実行することに続いて、入力が長い押圧基準を満足するとの判定に従って、第２の動作を実行するように、構成されている。
【０４６２】
一部の実施形態では、第１の動作を実行することは、プレビュー領域を表示することを含む。
【０４６３】
一部の実施形態では、第２の動作を実行することは、メニュービューを表示することを含む。
【０４６４】
一部の実施形態では、第１の強度閾値は、入力における複数の接触が第１の強度閾値を満足することに応じて満足される。
【０４６５】
一部の実施形態では、第１の強度閾値は、入力における複数の接触により加えられる強度を組み合わせたものが第１の強度閾値を満足することに応じて満足される。
【０４６６】
一部の実施形態では、第１の強度閾値は調節可能である。一部のかかる実施形態では、処理ユニット１７０８は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように第１のジェスチャレコグナイザを更新するように構成される。
【０４６７】
一部の実施形態では、処理ユニットは、入力が強度入力基準を満足せずかつ長い押圧基準を満足しないとの判定に従って、第１の動作及び第２の動作を取り止めるように構成されている。
【０４６８】
一部の実施形態では、強度入力基準は、入力がタッチ感知面にわたって所定の距離を超えて移動しないことを含み、また、長い押圧基準は、入力における接触がタッチ感知面にわたって所定の距離を超えて移動しないことを含む。
【０４６９】
一部の実施形態では、入力評価ユニットは、第２の入力の第１の部分及び第２の入力の第１の部分に続く第２の入力の第２の部分の検出を含め、タッチ感知面上の第２の入力を検出するように、並びに、タッチ感知面上の第２の入力の第１の部分を検出することに応じて、少なくとも第２の入力の第１の部分に対応するジェスチャレコグナイザの第２のセットを識別するように、構成されており、ジェスチャレコグナイザの第２のセットは、第２のジェスチャレコグナイザを含むが第１のジェスチャレコグナイザは含まない。更に、これらの実施形態では、処理ユニットは、タッチ感知面上の第２の入力の第２の部分を検出することに応じて、第２の入力が第１の所定の時間期間とは異なる持続時間を有する第２の所定の時間期間の間タッチ感知面上に留まることを含む第２の長い押圧基準を、第２の入力が満足するとの判定に従って、第２のジェスチャレコグナイザを用いて第２の入力を処理することを含む。
【０４７０】
一部の実施形態では、電子デバイス１７００（図１７）は、パンジェスチャと深い押圧入力との間の区別を行うように、並びにパンジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。かかる実施形態では、処理ユニット１７０８は、第１のユーザインターフェースの表示を可能にするように構成され、また処理ユニット１７０８は、第１のユーザインターフェースの表示を（例えば、表示可能化ユニット１７１０を用いて）可能にしている間にタッチ感知面ユニット上の入力を（例えば、入力評価ユニット１７１２を用いて）検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１の強度閾値を満足することを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を（例えば、動作実行ユニット１７１６を用いて）実行し、及び、入力がタッチ感知面にわたって少なくとも所定の距離だけ移動したことを含むパン基準を入力が満足するとの判定に従って、第２の動作を（例えば、動作実行ユニット１７１６を用いて）実行する、ように更に構成されている。これらの実施形態の一部の実装形態では、第１のユーザインターフェースは第１のソフトウェアアプリケーションのユーザインターフェースであり、第１のユーザインターフェースは、（例えば、表示可能化ユニット１７１０及び／又は動作実行ユニット１７１６を用いた）プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられた第１のユーザインターフェースオブジェクトを含む、複数のユーザインターフェースオブジェクトを含む。一部の実施形態では、電子デバイス１７００は、図９Ａ〜図９Ｄを参照して上記した方法のいずれかを実行するように構成されている。
【０４７１】
一部の実施形態では、処理ユニット１７０８の入力評価ユニット１７１２は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分の検出を含め、タッチ感知面上の入力を検出するように、並びに、タッチ感知面上の入力の第１の部分を検出することに応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別するように、構成されており、ジェスチャレコグナイザの第１のセットは、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザを含む。更に、処理ユニット１７０８の動作実行ユニット１７１６は、タッチ感知面上の入力の第２の部分を検出することに応じて、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザを用いて入力を処理することを含む第１の動作を実行するように、及び、入力がパン基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて入力を処理することを含む第２の動作を実行するように、構成されている。
【０４７２】
一部の実施形態では、強度入力基準は、入力がタッチ感知面にわたって少なくとも所定の距離を移動しないことを含む。
【０４７３】
一部の実施形態では、第１のジェスチャレコグナイザは強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザはパンジェスチャレコグナイザである。
【０４７４】
一部の状況では、入力は、入力の第２の部分に続く入力の第３の部分を含み、また一部の実施形態では、動作実行ユニット１７１６は、第１のジェスチャレコグナイザを用いて入力の第３の部分を処理するように構成されている。
【０４７５】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第３のジェスチャレコグナイザを含む。
【０４７６】
一部の実施形態では、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることを含めて、第１のジェスチャレコグナイザを用いて入力を処理することように構成されている。
【０４７７】
一部の実施形態では、動作実行ユニット１７１６は、入力の第１の部分の検出に応じて、第３の動作を処理するように構成されている。更に、一部のかかる実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別することを含む。また、一部のかかる実施形態では、動作実行ユニット１７１６は、第３の動作を実行することに続いて、入力が強度入力基準を満足するとの判定に従って、第１の動作を実行するように、及び、第３の動作を実行することに続いて、入力がパン基準を満足するとの判定に従って、第２の動作を実行するように、構成されている。
【０４７８】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは第４のジェスチャレコグナイザを含み、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第４のジェスチャレコグナイザを用いて入力を処理するように構成されている。
【０４７９】
一部の実施形態では、第１の動作を実行することは、プレビュー領域を表示することを含む。
【０４８０】
一部の実施形態では、第２の動作を実行することは、第１のユーザインターフェースの少なくとも一部をスクロールすることを含む。
【０４８１】
一部の実施形態では、第３の動作の実行に続いて第２の動作を実行することは、第３の動作を無効にすることを含む。
【０４８２】
一部の実施形態では、第１の強度閾値は調節可能である。一部のかかる実施形態では、処理ユニット１７０８は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように第１のジェスチャレコグナイザを更新するように構成される。
【０４８３】
一部の実施形態では、処理ユニット１７０８は、第１の動作の実行を開始することに続いて、第２の動作の実行を取り止めるように構成されている。同様に、一部の実施形態では、処理ユニット１７０８は、第２の動作の実行を開始することに続いて、第１の動作の実行を取り止めるように構成されている。
【０４８４】
一部の実施形態では、電子デバイス１７００（図１７）は、タップジェスチャ入力と深い押圧入力との間の区別を行うように、並びにタップジェスチャ及び深い押圧入力に応じて個別の動作を実行するように、構成されている。かかる実施形態では、処理ユニット１７０８は、第１のユーザインターフェースの表示を可能にするように構成され、また処理ユニット１７０８は、第１のユーザインターフェースの表示を（例えば、表示可能化ユニット１７１０を用いて）可能にしている間にタッチ感知面ユニット上の入力を（例えば、入力評価ユニット１７１２を用いて）検出し、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１の強度閾値を満足しかつ入力が第１の所定の時間期間の間タッチ感知面上に留まることを含む強度入力基準を入力が満足するとの判定に従って、第１の動作を（例えば、動作実行ユニット１７１６を用いて）実行し、及び、入力が第１の所定の時間期間の間タッチ感知面上に留まるのをやめることを含む長い押圧基準を入力が満足するとの判定に従って、第２の動作を（例えば、動作実行ユニット１７１６を用いて）実行する、ように更に構成されている。これらの実施形態の一部の実装形態では、第１のユーザインターフェースは第１のソフトウェアアプリケーションのユーザインターフェースであり、第１のユーザインターフェースは、（例えば、表示可能化ユニット１７１０及び／又は動作実行ユニット１７１６を用いた）プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられた第１のユーザインターフェースオブジェクトを含む、複数のユーザインターフェースオブジェクトを含む。一部の実施形態では、電子デバイス１７００は、図１０Ａ〜図１０Ｄを参照して上記した方法のいずれかを実行するように構成されている。
【０４８５】
一部の実施形態では、処理ユニット１７０８の入力評価ユニット１７１２は、入力の第１の部分及び入力の第１の部分に続く入力の第２の部分の検出を含め、タッチ感知面上の入力を検出するように、並びに、タッチ感知面上の入力の第１の部分を検出することに応じて、入力の少なくとも第１の部分に対応するジェスチャレコグナイザの第１のセットを候補ジェスチャレコグナイザとして識別するように、構成されており、ジェスチャレコグナイザの第１のセットは、第１のジェスチャレコグナイザ及び第２のジェスチャレコグナイザを含む。更に、処理ユニット１７０８の動作実行ユニット１７１６は、タッチ感知面上の入力の第２の部分を検出することに応じて、入力が強度入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザを用いて入力を処理することを含む第１の動作を実行するように、及び、入力がタップ基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて入力を処理することを含む第２の動作を実行するように、構成されている。
【０４８６】
一部の実施形態では、第１のジェスチャレコグナイザは強度に基づくジェスチャレコグナイザであり、第２のジェスチャレコグナイザはタップジェスチャレコグナイザである。
【０４８７】
一部の状況では、入力は、入力の第２の部分に続く入力の第３の部分を含み、また一部の実施形態では、動作実行ユニット１７１６は、第１のジェスチャレコグナイザを用いて入力の第３の部分を処理するように構成されている。
【０４８８】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは、第３のジェスチャレコグナイザを含む。
【０４８９】
一部の実施形態では、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることを含めて、第１のジェスチャレコグナイザを用いて入力を処理することように構成されている。
【０４９０】
一部の実施形態では、ジェスチャレコグナイザの第１のセットは第４のジェスチャレコグナイザを含み、動作実行ユニット１７１６は、入力が第２の強度閾値を満足すると判定することに応じて、第４のジェスチャレコグナイザを用いて入力を処理するように構成されている。
【０４９１】
一部の実施形態では、動作実行ユニット１７１６は、入力の第１の部分の検出に応じて、第３の動作を処理するように構成されている。更に、一部のかかる実施形態では、第３の動作を実行することは、第１のユーザインターフェースの少なくとも一部を第１のユーザインターフェースの他の部分と視覚的に区別することを含む。また、一部のかかる実施形態では、動作実行ユニット１７１６は、第３の動作を実行することに続いて、入力が強度入力基準を満足するとの判定に従って、第１の動作を実行するように、及び、第３の動作を実行することに続いて、入力がタップ基準を満足するとの判定に従って、第２の動作を実行するように、構成されている。また、一部のかかる実施形態では、入力評価ユニット１７１０は、第１の所定の時間期間の間に第３の動作の実行を開始するように構成されている。
【０４９２】
一部の実施形態では、第１の動作を実行することは、プレビュー領域を表示することを含む。
【０４９３】
一部の実施形態では、第２の動作を実行することは、第１のユーザインターフェースの表示をタッチ感知面上の入力の場所に対応するソフトウェアアプリケーションの第３のユーザインターフェースと入れ替えることを含む。
【０４９４】
一部の実施形態では、第１の強度閾値は調節可能である。更に、一部のかかる実施形態では、処理ユニット１７０８は、入力の強度が第１の強度閾値とは異なる第３の強度閾値を満足することに応じてアクティブ化されるように第１のジェスチャレコグナイザを更新するように構成される。
【０４９５】
一部の実施形態では、処理ユニット１７０８は、入力が強度入力基準を満足するか否かに関係なく、入力がタップ基準を満足するとの判定に従って、第２の動作を実行するように構成される。
【０４９６】
一部の実施形態では、処理ユニット１７０８は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の所定の時間期間の間タッチ感知面上に留まった後、入力がタッチ感知面上で検出されなくなり、かつ入力が強度入力基準を満足しない、との判定に従って、第２の動作を実行するように構成される。更に、かかる実施形態では、処理ユニット１７０８は、第１のユーザインターフェースの表示中に入力を検出することに応じて、入力が第１の所定の時間期間の間タッチ感知面上に留まった後、入力がタッチ感知面上で検出されなくなり、かつ入力が強度入力基準を満足する、との判定に従って、第２の動作の実行を取り止めるように構成される。
【０４９７】
上述の情報処理方法での動作は、汎用プロセッサ（例えば、図１Ａ及び図３に関連して上述されたようなもの）又は特定用途向けチップなどの、情報処理装置内の１つ以上の機能モジュールを稼働することによって、任意選択的に実施される。
【０４９８】
一部の実施形態によれば、図１８は、説明される様々な実施形態の原理に従って構成された、電子デバイス１８００の機能ブロック図を示す。デバイス１８００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図１８で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０４９９】
図１８に示すように、電子デバイス１８００は、１つ以上のユーザインターフェースを表示するように構成されたディスプレイユニット１８０２と、ユーザの入力を受けるように構成された、タッチ感知面ユニット１８０４と、タッチ感知面ユニット１８０４上の接触の強度を検出するように構成された１つ以上のセンサユニット１８０６と、ディスプレイユニット１８０２、タッチ感知面ユニット１８０４、及び１つ以上のセンサユニット１８０６に結合された、処理ユニット１８０８と、を含む。一部の実施形態では、処理ユニット１８０８は、表示可能化ユニット１８１０、検出ユニット１８１２、及びプレビュー動作ユニット１８１４を含む。
【０５００】
処理ユニット１８０８は、第１のソフトウェアアプリケーションの第１のユーザインターフェースであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、第１のユーザインターフェースの表示を（例えば、表示可能化ユニット１８１０を用いて）可能にし、ディスプレイユニット１８０２上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を（例えば、検出ユニット１８１２を用いて）検出し、入力の第１の部分の検出に応じて及び入力が第１の強度閾値を満足することを含むリビール基準を入力の第１の部分が満足するとの判定に従って、アプリケーション非依存の所定の命令セットにプレビューコンテンツを提供することを含めて、（例えば、プロビジョニング動作ユニット１８１４を用いた）プレビュー動作のためのアプリケーション非依存の所定の命令セットを実行する、ように構成されている。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトを視覚的に区別することと、第１のユーザインターフェース内の第１のユーザインターフェースオブジェクトの視覚的区別の開始後に、入力の第１の部分に続く入力の第２の部分を受信すること、及び、入力が第２の強度閾値を満足することを含むプレビュー基準を入力の第２の部分が満足するとの判定に従って、第１のユーザインターフェース上に重ねられたプレビュー領域の表示を可能にすることと、を含む。プレビュー領域はプレビューコンテンツを含む。
【０５０１】
一部の実施形態では、プレビュー動作の開始後は、プレビュー動作は、第１のソフトウェアアプリケーションから独立して実行される。
【０５０２】
一部の実施形態では、プレビュー動作は、接触の強度に従ってプレビュー領域を更新することを含む。
【０５０３】
一部の実施形態では、プレビュー動作は、入力の第２の部分の検出に応じて、入力の第２の部分がプレビュー領域消滅基準を満たすとの判定に従って、プレビュー領域の表示を終了し第１のユーザインターフェースの表示を維持することを含む。
【０５０４】
一部の実施形態では、プレビュー動作は、入力の第２の部分の検出後に、接触による入力の第３の部分を検出することと、接触による入力の第３の部分の検出に応じて、入力の第３の部分がユーザインターフェース入れ替え基準を満たすとの判定に従って、第１のユーザインターフェースの表示を第１のユーザインターフェースとは異なる第２のユーザインターフェースと入れ替えることと、を含む。
【０５０５】
一部の実施形態では、プレビュー動作は、第２のユーザインターフェースを生成するために、アプリケーション非依存の所定の命令セットから第１のユーザインターフェースオブジェクトに関する動作を示す情報を送信すること、及び、アプリケーション非依存の所定の命令セットにおいて第２のユーザインターフェースを受信することを含む。プレビューコンテンツは、第２のユーザインターフェースの少なくとも一部を含む。
【０５０６】
一部の実施形態では、プレビュー動作は、第１のソフトウェアアプリケーションにおいて、第１のユーザインターフェースオブジェクトに関する動作を示す情報を受信すること、第２のユーザインターフェースを生成すること、及び第２のユーザインターフェースをアプリケーション非依存の所定の命令セットに送信することを含む。
【０５０７】
処理ユニット１８０８は、第１のソフトウェアアプリケーションの第１のユーザインターフェースであって、第１のユーザインターフェースは複数のユーザインターフェースオブジェクトを含み、複数のユーザインターフェースオブジェクトのうちの第１のユーザインターフェースオブジェクトは、プレビュー動作のためのアプリケーション非依存の所定の命令セットに関連付けられている、第１のユーザインターフェースの表示を（例えば、表示可能化ユニット１８１０を用いて）可能にし、ディスプレイユニット１８０２上でフォーカスセレクタが複数のユーザインターフェースオブジェクト中の第１のユーザインターフェースオブジェクト上にある間に、接触による入力の第１の部分を（例えば、検出ユニット１８１２を用いて）検出し、入力の第１の部分の検出に応じて及び入力の第１の部分がプレビュー基準を満たすとの判定に従って、プレビュー動作のためのアプリケーション非依存の所定の命令セットを（例えば、プレビュー動作ユニット１８１４を用いて）実行する、ように構成されている。アプリケーション非依存の所定の命令セットを実行することによって実行されるプレビュー動作は、第１のユーザインターフェース上に重ねられたプレビュー領域の表示を可能にすることと、入力の第１の部分の検出後に入力の第２の部分を検出することと、接触による入力の第２の部分の検出に応じて、入力の第２の部分がユーザインターフェース入れ替え基準を満たすとの判定に従って、第１のユーザインターフェースの表示を第１のユーザインターフェースとは異なる第２のユーザインターフェースと入れ替えることと、を含む。
【０５０８】
一部の実施形態では、プレビュー動作の開始後は、プレビュー動作は、第１のソフトウェアアプリケーションから独立して実行される。
【０５０９】
一部の実施形態では、第１のユーザインターフェースの表示を第２のユーザインターフェースと入れ替えることに続いて検出されたタッチ感知面ユニット１８０４上の入力は、第１のソフトウェアアプリケーションを用いて処理される。
【０５１０】
一部の実施形態によれば、図１９は、説明される様々な実施形態の原理に従って構成された、電子デバイス１９００の機能ブロック図を示す。デバイス１９００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図１９で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０５１１】
図１９に示すように、電子デバイス１９００は、ユーザインターフェースを表示するように構成されたディスプレイユニット１９０２と、ユーザの入力を受けるように構成された、タッチ感知面ユニット１９０４と、タッチ感知面ユニット１９０４上の接触の強度を検出するように構成された１つ以上のセンサユニット１９０６と、ディスプレイユニット１９０２、タッチ感知面ユニット１９０４、及び１つ以上のセンサユニット１９０６に結合された、処理ユニット１９０８と、を含む。一部の実施形態では、処理ユニット１９０８は、表示可能化ユニット１９１０、検出ユニット１９１２、送信ユニット１９１４、受信ユニット１９１６、及び調節ユニット１９１８を含む。
【０５１２】
処理ユニット１９０８は、ディスプレイユニット１９０２上でのソフトウェアアプリケーションのユーザインターフェースの表示を（例えば、表示可能化ユニット１９１０を用いて）可能にする、ディスプレイユニット１９０２上でのソフトウェアアプリケーションのユーザインターフェースの表示を可能にしている間に、ソフトウェアアプリケーションのユーザインターフェースに対応する場所におけるタッチ感知面ユニット１９０４上の入力を（例えば、検出ユニット１９１２を用いて）検出する、及び、入力の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力に対応する強度情報を（例えば、送信ユニット１９１４を用いて）送るように、構成されている。強度情報は、１つ以上のセンサに割り当てられた基準強度、及び検出された入力の強度に対応する特性強度を含む。
【０５１３】
一部の実施形態では、特性強度は、感度値によって更に調節される。
【０５１４】
一部の実施形態では、処理ユニット１９０８は、ディスプレイユニット１９０２上での、複数の強度感度設定の間でそれぞれの強度感度設定を選択するための感度コントロールの表示を（例えば、表示可能化ユニット１９１０を用いて）可能にする、感度コントロールの表示を可能にしている間に、複数の強度感度設定のうちのそれぞれの強度感度設定の選択に対応するユーザ入力を（例えば、受信ユニット１９１６を用いて）受信する、及び、それぞれの強度感度設定の選択に対応するユーザ入力を受信することに応じて、複数の続く入力に関する特性強度値をユーザが選択したそれぞれの強度感度設定に対応するそれぞれの感度値によって（例えば、調節ユニット１９１８を用いて）調節するように、更に構成されている。
【０５１５】
一部の実施形態では、入力の特性強度は、基準強度に基づいて正規化される正規化された強度値である。
【０５１６】
一部の実施形態では、強度情報は、強度に基づく基準と強度に基づかない基準の組合せに基づく１つ以上のヒューリスティックによって判定される強度状態情報を含む。
【０５１７】
一部の実施形態では、強度情報は複数の異なる利用可能な状態値を有する強度状態情報を含み、強度状態間の遷移が、オペレーティングシステム駆動ユーザ対話をトリガするために、オペレーティングシステムの全体にわたって使用される。
【０５１８】
一部の実施形態では、強度状態情報は、現在の強度状態がジェスチャレコグナイザに関する強度状態要件に適合するか否かに関するデバイスからの指示に基づいて提供される。
【０５１９】
一部の実施形態では、入力の特性強度は、タッチイベントに対応する接触の特性強度を各々含む１つ以上のタッチイベントを介して提供される。
【０５２０】
一部の実施形態によれば、図２０は、説明される様々な実施形態の原理に従って構成された、電子デバイス２０００の機能ブロック図を示す。デバイス２０００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図２０で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０５２１】
図２０に示すように、電子デバイス２０００は、ユーザインターフェースを表示するように構成されたディスプレイユニット２００２と、ユーザの入力を受けるように構成された、タッチ感知面ユニット２００４と、タッチ感知面ユニット２００４上の接触の強度を検出するように構成された１つ以上のセンサユニット２００６と、ディスプレイユニット２００２、タッチ感知面ユニット２００４、及び１つ以上のセンサユニット２００６に結合された、処理ユニット２００８と、を含む。一部の実施形態では、処理ユニット２００８は、表示可能化ユニット２０１０、検出ユニット２０１２、提供ユニット２０１４、更新ユニット２０１６、及び開始ユニット２０１８を含む。
【０５２２】
処理ユニット２００８は、ディスプレイユニット２００２上でのソフトウェアアプリケーションの第１のユーザインターフェースの表示を（例えば、表示可能化ユニット２０１０を用いて）可能にする、ソフトウェアアプリケーションの第１のユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット２００４上の入力を（例えば、検出ユニット２０１２を用いて）検出する、並びに、入力の検出中に、入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力の強度の変化を表す第１の進度インジケータの値を（例えば、提供ユニット２０１４を用いて）提供する、並びに、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第１の進度インジケータの値に従って、第１のユーザインターフェースを（例えば、更新ユニット２０１６を用いて）更新すること、を含む。
【０５２３】
一部の実施形態では、第１の進度インジケータの値は、第１の最初の状態と第１の最終状態との間の入力の状態を示す正規化値である。
【０５２４】
一部の実施形態では、第１の最初の状態及び第１の最終状態は、ソフトウェアアプリケーションによって指定される。
【０５２５】
一部の実施形態では、処理ユニット２００８は、入力の検出中に、第１の最終状態を超える入力の強度の変化の検出に応じて、アプリケーション非依存の命令セットからソフトウェアアプリケーションに入力の変化を表す第２の進度インジケータの値を（例えば、提供ユニット２０１４を用いて）提供するように構成されており、この場合第２の進度インジケータの値は、第２の最初の状態と第２の最終状態との間の入力の状態を示す正規化値であり、処理ユニット２００８はまた、アプリケーション非依存の命令セットとは異なるソフトウェアアプリケーション中の命令セット及び第２の進度インジケータの値に従って、第１のユーザインターフェースを（例えば、更新ユニット２０１６を用いて）更新するように構成されている。
【０５２６】
一部の実施形態では、異なる状態間の進度は、強度に基づく基準と強度に基づかない基準の組合せに基づく１つ以上のヒューリスティックによって判定される。
【０５２７】
一部の実施形態では、これらの状態は、デバイスのオペレーティングシステムによって提供される状態値のセットから選択され、これらの状態間の遷移が、オペレーティングシステム駆動ユーザ対話をトリガするために、オペレーティングシステムの全体にわたって使用される。
【０５２８】
一部の実施形態では、ソフトウェアアプリケーション中の命令セット及び第２の進度インジケータの値に従って第１のユーザインターフェースを更新することは、第１のユーザインターフェースを第２のユーザインターフェースと入れ替えることを含む。
【０５２９】
一部の実施形態では、ソフトウェアアプリケーション中の命令セットは、入力の強度の変化を図式的に表すカスタマイズされたアニメーションを提供するように構成される。
【０５３０】
一部の実施形態では、処理ユニット２００８は、入力の検出中に、入力が第１の強度基準を満足することを検出することに応じて、第１の進度インジケータの値が入力の強度の変化を表すように、（例えば、開始ユニット２０１８を用いて）第１の進度インジケータを開始するように構成されている。
【０５３１】
図２１は、一部の実施形態による、電子デバイスの機能ブロック図である。
【０５３２】
一部の実施形態によれば、図２１は、説明される様々な実施形態の原理に従って構成された、電子デバイス２１００の機能ブロック図を示す。デバイス２１００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図２１で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０５３３】
図２１に示すように、電子デバイス２１００は、ユーザインターフェースを表示するように構成されたディスプレイユニット２１０２と、接触を検出するように構成されたタッチ感知面ユニット２１０４と、タッチ感知面ユニット２１０４との接触の強度を検出するように構成された１つ以上のセンサユニット２１０６と、ディスプレイユニット２１０２、タッチ感知面ユニット２１０４、及び１つ以上のセンサユニット２１０６に結合された処理ユニット２１０８と、を含む。一部の実施形態では、処理ユニット２１０８は、表示可能化ユニット２１１０、検出ユニット２１１２、第１の動作ユニット２１１４、時間期間再開ユニット２１１６、基準強度リセットユニット２１１８、取り止めユニット２１２０、第２の動作ユニット２１２２、及び第３の動作ユニット２１２４を含む。
【０５３４】
処理ユニット２１０８は、ディスプレイユニット２１０２上での、オペレーティングシステム内で実行される第１の第三者アプリケーションのユーザインターフェースの表示を（例えば、表示可能化ユニット２１１０を用いて）可能にするように構成されている。デバイスの機能は、オペレーティングシステムのオペレーティングシステムフレームワークを通して、第１の第三者アプリケーションに曝される。オペレーティングシステムフレームワークは、デバイスが認識できる複数のジェスチャクラスを定義する。第１のジェスチャクラスは、第１のジェスチャ認識基準が満たされるときに、タッチ感知面ユニット２１０４上で検出された入力を第１のジェスチャとして認識するための、第１のジェスチャ認識基準に関連付けられている。第１の第三者アプリケーションは、第１の動作に関して、ユーザインターフェースの第１の部分を、第１のジェスチャクラスからの第１のジェスチャに関連付けている。第１の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定している。処理ユニット２１０８は、ディスプレイユニット２１０２上で第１の第三者アプリケーションのユーザインターフェースの表示を可能にしている間に、第１の第三者アプリケーションのユーザインターフェースの第１の部分に対応する場所におけるタッチ感知面２１０４上の入力を（例えば、検出ユニット２１１２を使用して）検出する、並びに、入力の検出に応じて、入力が第１のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第１の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第１の動作を（例えば、第１の動作実行ユニット２１１４を用いて）実行する、並びに、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第１の動作の実行を（例えば、取り止めユニット２１１６を用いて）取り止めるように、構成されている。
【０５３５】
一部の実施形態では、第１の第三者アプリケーションは、第２の動作に関して、ユーザインターフェースの第１の部分を第１のジェスチャクラスからの第１のジェスチャに関連付けており、また、第１の第三者アプリケーションは、第２の動作に関して、ユーザインターフェースの第１の部分に関連付けられた第１のジェスチャに関する第１の強度基準を指定していない。処理ユニット２１０８は、入力の検出に応じて、入力が第１のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第１の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分と関連付けられた第２の動作を（例えば、第２の動作実行ユニット２１１８を用いて）実行する、並びに、入力が第１のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第１の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第２の動作の実行を（例えば、取り止めユニット２１１６を用いて）取り止めるように、構成されている。
【０５３６】
一部の実施形態では、第２のジェスチャクラスは、第２のジェスチャ認識基準が満たされるときに、タッチ感知面ユニット２１０４上で検出された入力を第２のジェスチャとして認識するための、第２のジェスチャ認識基準に関連付けられている。第１の第三者アプリケーションは、第３の動作に関して、ユーザインターフェースの第１の部分を、第２のジェスチャクラスからの第２のジェスチャに関連付けている。第１の第三者アプリケーションは、第３の動作に関してユーザインターフェースの第１の部分に関連付けられた第２のジェスチャに関する第２の強度基準を指定している。処理ユニット２１０８は、入力の検出に応じて、入力が第２のジェスチャ認識基準を満たすとの及び入力が第１の第三者アプリケーションによって指定された第２の強度基準を満たすとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第３の動作を（例えば、第３の動作実行ユニット２１２０を用いて）実行する、並びに、入力が第２のジェスチャ認識基準を満たすが第１の第三者アプリケーションによって指定された第２の強度基準は満たさないとの判定に従って、第１の第三者アプリケーションのユーザインターフェースの第１の部分に関連付けられた第３の動作の実行を（例えば、取り止めユニット２１１６を用いて）取り止めるように、構成されている。
【０５３７】
一部の実施形態では、第１の強度基準は強度閾値を含む。
【０５３８】
一部の実施形態では、強度閾値は所定の閾値のセットから選択される。
【０５３９】
一部の実施形態では、強度閾値は、デバイス（例えば、デバイス２１００又はセンサユニット２１０６）が検出可能な値の範囲から選択される。
【０５４０】
一部の実施形態では、処理ユニット２１０８は、ディスプレイユニット２１０２上での、オペレーティングシステム内で実行されかつ第１の第三者アプリケーションとは異なる第２の第三者アプリケーションのユーザインターフェースの表示を（例えば、表示可能化ユニット２１１０を用いて）可能にするように構成されている。第２の第三者アプリケーションは、第１の動作に関して、第２の第三者アプリケーションのユーザインターフェースの第２の部分を、第１のジェスチャクラスからの第１のジェスチャに関連付けている。第２の第三者アプリケーションは、第１の動作に関してユーザインターフェースの第２の部分に関連付けられた第１のジェスチャに関する第３の強度基準を指定している。第３の強度基準は、第１の強度基準とは異なる。処理ユニット２１０８は、ディスプレイユニット２１０２上での第２の第三者アプリケーションのユーザインターフェースの表示を可能にしている間に、第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所におけるタッチ感知面ユニット２１０４上の入力を（例えば、検出ユニット２１１２を使用して）検出する、並びに、第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所における入力の検出に応じて、第２の第三者アプリケーションのユーザインターフェースの第２の部分に対応する場所における入力が第１のジェスチャ認識基準を満たすとの及び入力が第２の第三者アプリケーションによって指定された第３の強度基準を満たすとの判定に従って、第２の第三者アプリケーションのユーザインターフェースの第２の部分に関連付けられた第１の動作を（例えば、第１の動作ユニット２１１４を用いて）実行する、並びに、第２の第三者アプリケーションのユーザインターフェースのこの部分に対応する場所における入力が第１のジェスチャ認識基準を満たすが第２の第三者アプリケーションによって指定された第３の強度基準は満たさないとの判定に従って、第２の第三者アプリケーションのユーザインターフェースの第２の部分に関連付けられた第１の動作の実行を（例えば、取り止めユニット２１１６を使用して）取り止めるように、構成されている。
【０５４１】
一部の実施形態によれば、図２２は、説明される様々な実施形態の原理に従って構成された、電子デバイス２２００の機能ブロック図を示す。デバイス２２００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図２２で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０５４２】
図２２に示すように、電子デバイス２２００は、ユーザインターフェースを表示するように構成されたディスプレイユニット２２０２と、接触を検出するように構成されたタッチ感知面ユニット２２０４と、タッチ感知面ユニット２２０４との接触の強度を検出するように構成された１つ以上のセンサユニット２２０６と、ディスプレイユニット２２０２、タッチ感知面ユニット２２０４、及び１つ以上のセンサユニット２２０６に結合された処理ユニット２２０８と、を含む。一部の実施形態では、処理ユニット２２０８は、表示可能化ユニット２２１０、検出ユニット２２１２、第１の動作ユニット２２１４、時間期間再開ユニット２２１６、基準強度リセットユニット２２１８、取り止めユニット２２２０、第２の動作ユニット２２２２、及び第３の動作ユニット２２２４を含む。
【０５４３】
処理ユニット２２０８は、ディスプレイユニット２２０２上でのユーザインターフェースの表示を（例えば、表示可能化ユニット２２１０を用いて）可能にする、ユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット２２０４上の入力を（例えば、検出ユニット２２１２を用いて）検出する、並びに、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力の検出中に、入力が第１のタイミング基準及び第１の強度入力基準を満足するとの判定に従って、第１の動作を（例えば、第１の動作ユニット２２１４を使用して）を実行するように、構成されている。第１のタイミング基準は、第１の時間期間が経過する間、入力がタッチ感知面ユニット２２０４上に留まることを要求する。第１の強度入力基準は、入力が第１の時間期間の終わりに又はこれに続いて第１の強度閾値を満足することを要求する。
【０５４４】
一部の実施形態では、第１の時間期間は、タッチ感知面ユニット２２０４上の入力の検出に応じて始まる。
【０５４５】
一部の実施形態では、処理ユニット２２０８は、入力の検出中に、入力の強度が基準強度閾値を下回って減少したとの判定に従って、第１の時間期間を（例えば、時間期間再開ユニット２２１６を使用して）再開するように構成されている。
【０５４６】
一部の実施形態では、処理ユニット２２０８は、入力の検出中に、入力の強度が基準強度閾値を下回って減少したとの判定に従って、基準強度閾値を（例えば、基準強度リセットユニット２２１８を使用して）リセットするように構成されている。
【０５４７】
一部の実施形態では、処理ユニット２２０８は、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第１のタイミング基準及び／又は第１の強度入力基準を満足しないとの判定に従って、第１の動作を（例えば、取り止めユニット２２２０を使用して）取り止めるように構成されている。
【０５４８】
一部の実施形態では、処理ユニット２２０８は、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力が第２のタイミング基準及び第２の強度入力基準を満足するとの判定に従って、第１の動作とは異なる第２の動作を（例えば、第２の動作ユニット２２２２を使用して）取り止めるように構成されている。第２のタイミング基準は、第２の時間期間が経過する間、入力がタッチ感知面ユニット２２０４上に留まることを要求する。第２の強度入力基準は、第２の時間期間の終わりに又はこれに続いて入力が第１の強度閾値とは異なる第２の強度閾値を満足することを要求する。
【０５４９】
一部の実施形態では、処理ユニット２２０８は、入力の検出に応じて及び入力が第１のタイミング基準及び第１の入力基準を満足するとの判定に従って、第１のジェスチャレコグナイザを用いて入力を処理することを含む第１の動作を（例えば、第１の動作ユニット２２１４を使用して）実行する、並びに、入力の検出に応じて及び入力が第２のタイミング基準及び第２の強度入力基準を満足するとの判定に従って、第２のジェスチャレコグナイザを用いて入力を処理することを含む第２の動作を（例えば、第２の動作ユニット２２２２を使用して）実行するように、構成されている。
【０５５０】
一部の実施形態では、処理ユニット２２０８は、入力の終わりを（例えば、検出ユニット２２１２を使用して）検出する、並びに、入力の終わりの検出に応じて、入力が第１のタイミング基準とは異なる第３のタイミング基準を満足するとの判定に従って、第１の動作とは異なる第３の動作を（例えば、第３の動作ユニット２２２４を使用して）実行するように、構成されている。
【０５５１】
一部の実施形態では、処理ユニット２２０８は、入力の終わりの検出に応じて、入力が第３のタイミング基準又は第１のタイミング基準を満足しないとの判定に従って、どのような動作の実行も（例えば、取り止めユニット２２２０を使用して）取り止めるように構成されている。
【０５５２】
一部の実施形態によれば、図２３は、説明される様々な実施形態の原理に従って構成された、電子デバイス２３００の機能ブロック図を示す。デバイス２３００の機能ブロックは、説明される様々な実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図２３で説明される機能ブロックが、説明される様々な実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書に記載される機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。
【０５５３】
図２３に示すように、電子デバイス２３００は、ユーザインターフェースを表示するように構成されたディスプレイユニット２３０２と、接触を検出するように構成されたタッチ感知面ユニット２３０４と、タッチ感知面ユニット２３０４との接触の強度を検出するように構成された１つ以上のセンサユニット２３０６と、ディスプレイユニット２３０２、タッチ感知面ユニット２３０４、及び１つ以上のセンサユニット２３０６に結合された処理ユニット２３０８と、を含む。一部の実施形態では、処理ユニット２３０８は、表示可能化ユニット２３１０、検出ユニット２３１２、第１の動作ユニット２３１４、及び第２の動作ユニット２３１６を含む。
【０５５４】
処理ユニット２３０８は、ディスプレイユニット２３０２上でのユーザインターフェースの表示を（例えば、表示可能化ユニット２３１０を用いて）可能にする、ユーザインターフェースの表示を可能にしている間に、タッチ感知面ユニット２３０４上の入力を（例えば、検出ユニット２３１２を用いて）検出する、並びに、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力の検出中に、入力がアクティブ化強度閾値を満足するとの判定に従って、第１の動作を（例えば、第１の動作ユニット２３１４を使用して）を実行するように、構成されている。アクティブ化強度閾値は、第１の強度値から時間とともに減少する第１の強度閾値成分を含む。
【０５５５】
一部の実施形態では、アクティブ化強度閾値は、入力の強度に遅れて従う第２の強度閾値成分を含む。
【０５５６】
一部の実施形態では、アクティブ化強度閾値は、第１の強度閾値成分と第２の強度閾値成分の和である。
【０５５７】
一部の実施形態では、第１の強度閾値成分は、入力が検出される瞬間から所定の時間間隔後に減少する。
【０５５８】
一部の実施形態では、第１の強度閾値成分が基準強度閾値を下回っていないとの判定に従って、第１の強度閾値成分は所定の時間間隔後に減少する減衰曲線に従い、また、第１の強度閾値成分が基準強度閾値を下回っているとの判定に従って、第１の強度閾値成分は、所定の時間間隔を参照せずに決定される時間において始まる減少する減衰曲線に従う。
【０５５９】
一部の実施形態では、処理ユニット２３０８は、第１のユーザインターフェースの表示を可能にしている間に入力を検出することに応じて、入力の検出中に、入力が第１のタイミング基準及び第１の強度入力基準を満足するとの判定に従って、第２の動作を（例えば、第２の動作ユニット２３１６を使用して）実行するように構成されている。第１のタイミング基準は、第１の時間期間が経過する間、入力がタッチ感知面ユニット２３０４上に留まることを要求する。第１の強度入力基準は、入力が第１の時間期間の終わりに又はこれに続いて第１の強度閾値を満足することを要求する。
【０５６０】
一部の実施形態では、第１の強度閾値成分は、入力が第１のタイミング基準及び第１の強度入力基準を満足する瞬間から所定の時間間隔後に減少する減衰曲線に従う。
【０５６１】
一部の実施形態では、入力は、強度の第１の増大及び強度の第１の増大に続く強度の第２の増大、並びに強度の第１の増大と強度の第２の増大との間の強度の減少を含む、連続的なジェスチャであり、この場合、入力は、強度の第１の増大と強度の第２の増大との間はタッチ感知面ユニット２３０４と接触したままである、処理ユニット２３０８は、入力の強度の第１の増大の検出に応じて、第２の動作を（例えば、第２の動作ユニット２３１６を使用して）実行する、及び、入力の強度の第２の増大の検出に応じて、第１の動作を（例えば、第１の動作ユニット２３１４を使用して）実行するように、構成されている。
【０５６２】
上述の情報処理方法での動作は、汎用プロセッサ（例えば、図１Ａ及び図３に関連して上述されたようなもの）又は特定用途向けチップなどの、情報処理装置内の１つ以上の機能モジュールを稼働することによって、任意選択的に実施される。
【０５６３】
図８Ａ〜図８Ｅ、図９Ａ〜図９Ｄ、図１０Ａ〜図１０Ｄ、図１１Ａ〜図１１Ｄ、図１２Ａ〜図１２Ｂ、図１３Ａ〜図１３Ｂ、図１４Ａ〜図１４Ｃ、図１５Ａ〜図１５Ｂ、及び図１６Ａ〜図１６Ｂを参照して上述された動作は、任意選択的に、図１Ａ〜図１Ｂに示される構成要素によって実施される。例えば、強度検出動作８０４、第１の動作８１０、及び第２の動作８１２は、イベントソート部１７０、イベントレコグナイザ１８０、及びイベント処理部１９０によって、任意選択的に実施される。例えば、入力検出動作１４１０、第１の動作実行動作１４１２、及び第２の動作実行動作１４１４は、イベントソート部１７０、イベントレコグナイザ１８０、及びイベント処理部１９０によって、任意選択的に実施される。イベントソート部１７０のイベントモニタ１７１は、タッチ感知ディスプレイ１１２上の接触を検出し、イベントディスパッチャモジュール１７４は、イベント情報をアプリケーション１３６−１に配信する。アプリケーション１３６−１の対応するイベントレコグナイザ１８０は、そのイベント情報を対応するイベント定義１８６に比較し、タッチ感知面上の第１の場所での第１の接触（又は、デバイスの回転）が、ユーザインターフェース上のオブジェクトの選択、又は１つの向きから別の向きへのデバイスの回転などの、所定のイベント又はサブイベントに対応するか否かを判定する。対応する所定のイベント又はサブイベントが検出されると、イベントレコグナイザ１８０は、イベント又はサブイベントの検出に関連するイベント処理部１９０をアクティブ化する。イベント処理部１９０は、アプリケーション内部状態１９２を更新するために、データ更新部１７６若しくはオブジェクト更新部１７７を、任意選択的に用いるか又は呼び出す。一部の実施形態では、イベント処理部１９０は、アプリケーションにより表示されるものを更新するために、対応するＧＵＩ更新部１７８にアクセスする。同様に、当業者にとって、他の処理が図１Ａ〜図１Ｂに示されるコンポーネントに基づいてどのように実施されるかは明らかであるだろう。
【０５６４】
上述の説明は、説明の目的上、特定の実施形態を参照して説明されている。しかしながら、上記の例示的な論考は、網羅的であること、又は本発明を、開示される厳密な形態に限定することを意図するものではない。上記の教示を鑑みて、多くの修正及び変形が可能である。本発明の原理及びその実際的な応用を最良の形で説明し、それによって他の当業者が、想到される特定の用途に好適な様々な改良で本発明及び様々な実施形態を最良の形で使用することを可能とするために、これらの実施形態を選択し説明した。
【０５６５】
付録Ａ
ｉＯＳ向けイベントハンドリングガイド
開発者用
【０５６６】
目次
ｉＯＳ内のイベントについて  ７
概要  ７
ＵＩＫｉｔはアプリがジェスチャを検出することを容易にする  ７
イベントはオブジェクトを処理するためにオブジェクトを探す特定の経路に沿って移動する  ８
ＵＩＥｖｅｎｔはタッチ、シェイクモーション、又はリモートコントロールイベントをカプセル化する  ８
アプリはユーザがそのビューにタッチするとマルチタッチイベントを受け取る  ８
アプリはユーザが自分のデバイスを動かすとモーションイベントを受け取る  ９
アプリはユーザがマルチメディアコントロールを操作するとリモートコントロールイベントを受け取る  ９
前提条件  ９
参考図書  １０
ジェスチャレコグナイザ  １１
ジェスチャレコグナイザを使用してイベントハンドリングを簡略化する  １１
内蔵ジェスチャレコグナイザは一般的なジェスチャを認識する  １２
ジェスチャレコグナイザはビューにアタッチされる  １２
ジェスチャはアクションメッセージをトリガする  １２
ジェスチャレコグナイザを用いてイベントに応答する  １３
インターフェースビルダを使用してジェスチャレコグナイザをアプリに追加する  １４
プログラムでジェスチャレコグナイザを追加する  １４
不連続ジェスチャに応答する  １５
連続ジェスチャに応答する  １７
ジェスチャレコグナイザがどのように対話するかを定義する  １８
ジェスチャレコグナイザは有限状態機械内で動作する  １８
他のジェスチャレコグナイザと対話する  ２０
他のユーザインターフェースコントロールと対話する  ２４
ジェスチャレコグナイザは生のタッチイベントを解釈する  ２４
イベントは現在のマルチタッチシーケンス用のすべてのタッチを含む  ２４
アプリはタッチハンドリングメソッドにおいてタッチを受け取る  ２５
ビューへのタッチの配信を規定する  ２６
ジェスチャレコグナイザはタッチを認識する最初の機会を取得する  ２６
ビューへのタッチの配信に作用する  ２７
カスタムジェスチャレコグナイザを作成する  ２８
カスタムジェスチャレコグナイザ用のタッチイベントハンドリングメソッドを実装する  ２９
ジェスチャレコグナイザの状態をリセットする  ３１
イベント配信：レスポンダチェーン  ３２
ヒットテスティングはタッチが発生したビューを返す  ３２
レスポンダチェーンはレスポンダオブジェクトから構成される  ３４
レスポンダチェーンは特定の配信経路に従う  ３５
マルチタッチイベント  ３８
ＵＩＲｅｓｐｏｎｄｅｒのサブクラスを作成する  ３８
サブクラス内にタッチイベントハンドリングメソッドを実装する  ３９
タッチイベントのフェーズ及び位置を追跡する  ４０
タッチオブジェクトを取り出し照会する  ４０
タップジェスチャを処理する  ４３
スワイプジェスチャ及びドラッグジェスチャを処理する  ４３
複合マルチタッチシーケンスを処理する  ４６
カスタムタッチイベントの挙動を指定する  ５０
ヒットテスティングをオーバーライドすることによってタッチを横取りする  ５２
タッチイベントを転送する  ５２
マルチタッチイベントを処理するためのベストプラクティス  ５４
モーションイベント  ５６
ＵＩＤｅｖｉｃｅを用いて現在のデバイスの方向を取得する  ５６
ＵＩＥｖｅｎｔを用いてシェイクモーションイベントを検出する  ５８
モーションイベント用のファーストレスポンダを指定する  ５８
モーションハンドリングメソッドを実装する  ５８
モーションイベントに必要なハードウェア能力を設定及びチェックする  ５９
コアモーションを用いてデバイスの動きを取り込む  ６０
モーションイベント更新間隔を選ぶ  ６１
コアモーションを使用して加速度計イベントを処理する  ６２
回転速度データを処理する  ６４
処理デバイスのモーションデータを処理する  ６７
リモートコントロールイベント  ７０
リモートコントロールイベントに対してアプリを準備する  ７０
リモートコントロールイベントを処理する  ７０
再生中情報を提供する  ７１
デバイス上のリモートコントロールイベントをテストする  ７２
文書改訂履歴  ７３
Ｏｂｊｅｃｔｉｖｅ−Ｃ  ６
【０５６７】
図、表、及びリスト
ジェスチャレコグナイザ  １１
図１−１        ビューにアタッチされたジェスチャレコグナイザ  １１
図１−２        不連続ジェスチャ及び連続ジェスチャ  １３
図１−３        ジェスチャレコグナイザ用の状態機械  １９
図１−４        マルチタッチシーケンス及びタッチフェーズ  ２５
図１−５        タッチイベント用のデフォルト配信経路  ２６
図１−６        タッチ用メッセージのシーケンス  ２７
表１−１        ＵＩＫｉｔフレームワークのジェスチャレコグナイザクラス  １２
リスト１−１    インターフェースビルダを用いてアプリにジェスチャレコグナイザを追加する  １４
リスト１−２    プログラムでシングルタップジェスチャレコグナイザを作成する  １４
リスト１−３    ダブルタップジェスチャを処理する  １５
リスト１−４    左又は右のスワイプジェスチャに応答する  １６
リスト１−５    回転ジェスチャに応答する  １７
リスト１−６    パンジェスチャレコグナイザはスワイプジェスチャレコグナイザが失敗することを必要とする  ２１
リスト１−７    ジェスチャレコグナイザがタッチを受け取ることを防止する  ２２
リスト１−８    チェックマークジェスチャレコグナイザの実装  ２９
リスト１−９    ジェスチャレコグナイザをリセットする  ３１
イベント配信：レスポンダチェーン  ３２
図２−１        ヒットテスティングはタッチされたサブビューを返す  ３３
図２−２        ｉＯＳ上のレスポンダチェーン  ３６
マルチタッチイベント  ３８
図３−１        ＵＩＥｖｅｎｔオブジェクト及びそのＵＩＴｏｕｃｈオブジェクトの関係  ４０
図３−２        所与のタッチイベント用のすべてのタッチ  ４１
図３−３        特定のウィンドウに属するすべてのタッチ  ４２
図３−４        特定のビューに属するすべてのタッチ  ４２
図３−５        排他的タッチビューを用いてイベント配信を制限する  ５１
リスト３−１    ダブルタップジェスチャを検出する  ４３
リスト３−２    ビュー内のスワイプジェスチャを追跡する  ４４
リスト３−３    シングルタッチを使用してビューをドラッグする  ４５
リスト３−４    マルチタッチの開始位置を記憶する  ４７
リスト３−５    タッチオブジェクトの初期位置を取り出す  ４７
リスト３−６    複合マルチタッチシーケンスを処理する  ４８
リスト３−７    マルチタッチシーケンス内の最後のタッチがいつ終了したかを判定する  ５０
リスト３−８    ヘルパレスポンダオブジェクトにタッチイベントを転送する  ５３
モーションイベント  ５６
図４−１        加速度計がｘ軸、ｙ軸、及びｚ軸に沿った速度を測定する  ６２
図４−２        ジャイロスコープがｘ軸、ｙ軸、及びｚ軸のまわりの回転を測定する  ６４
表４−１        加速度イベント用の一般的な更新間隔  ６１
リスト４−１    デバイス方向における変化に応答する  ５７
リスト４−２    ファーストレスポンダになる  ５８
リスト４−３    モーションイベントを処理する  ５９
リスト４−４    ＭｏｔｉｏｎＧｒａｐｈｓ内で加速度計データにアクセスする  ６３
リスト４−５    ＭｏｔｉｏｎＧｒａｐｈｓ内でジャイロスコープデータにアクセスする  ６５
リスト４−６    デバイスモーションの更新を開始及び停止する  ６８
リスト４−７    レンダリングより前に姿勢における変化を取得する  ６９
リモートコントロールイベント  ７０
リスト５−１    リモートコントロールイベントハンドラを登録する  ７１
リスト５−２    メディアアイテムについての再生中情報を収集する  ７２
【０５６８】
Ｏｂｊｅｃｔｉｖｅ−ＣＳｗｉｆｔ
【０５６９】
ｉＯＳ内のイベントについて
ユーザは、画面にタッチすること又はデバイスを振ることなどの、いくつかの方法で自分のｉＯＳデバイスを操作する。ｉＯＳは、ユーザがいつどのようにハードウェアを操作しているかを解釈し、この情報をアプリに渡す。アプリが自然で直感的な方法でアクションに応答すればするほど、ユーザがその体験に引き付けられる。
【表１】
0006559881.tif 000002
概要
イベントは、アプリにユーザアクションを知らせるためにアプリに送られるオブジェクトである。ｉＯＳでは、イベントは多くの形態：マルチタッチイベント、モーションイベント、及びマルチメディアを制御するためのイベントを取ることができる。この最後のタイプのイベントは、外部アクセサリを発生源とすることができるので、リモートコントロールイベントとして知られる。
【０５７０】
ＵＩＫｉｔはアプリがジェスチャを検出することを容易にする
ｉＯＳアプリは、タッチの組合せを認識し、ピンチングジェスチャに応じてコンテンツ上でズームすること、及びフリッキングジェスチャに応じてコンテンツを通してスクロールすることなどの、ユーザに直感的な方法でそれらに応答する。実際には、いくつかのジェスチャは、一般的なのでＵＩＫｉｔに内蔵されている。たとえば、ＵＩＢｕｔｔｏｎ及びＵＩＳｌｉｄｅｒなどのＵＩＣｏｎｔｒｏｌサブクラスは、特定のジェスチャ−ボタンのタップ及びスライダのドラッグに応答する。これらのコントロールを構成すると、そのタッチが発生するとき、ＵＩＣｏｎｔｒｏｌサブクラスはターゲットオブジェクトにアクションメッセージを送る。ジェスチャレコグナイザを使用することにより、ビュー上でターゲットアクション機構を利用することもできる。ジェスチャレコグナイザをビューにアタッチすると、ビュー全体は、指定するどんなジェスチャにも応答するコントロールのように働く。ジェスチャレコグナイザは、複雑なイベントハンドリングロジックのための高水準の抽象化を実現する。ジェスチャレコグナイザは、強力、再使用可能、かつ適合可能なので、アプリの中にタッチイベントハンドリングを実装する好ましい方法である。内蔵されたジェスチャレコグナイザのうちの１つを使用し、その挙動をカスタマイズすることができる。又は、ユーザ定義のジェスチャレコグナイザを作成して、新しいジェスチャを認識することができる。
関連する章：ジェスチャレコグナイザ（ページ１１）
【０５７１】
イベントはオブジェクトを処理するためにオブジェクトを探す特定の経路に沿って移動する
ｉＯＳがイベントを認識すると、ｉＯＳは、タッチが発生したビューなどの、そのイベントを処理することに最も適切なように見える初期オブジェクトにそのイベントを渡す。初期オブジェクトがそのイベントを処理することができない場合、ｉＯＳは、そのイベントを処理するのに十分なコンテキストを有するオブジェクトを見つけるまで、そのイベントをより広範囲にオブジェクトに渡し続ける。このオブジェクトのシーケンスはレスポンダチェーンとして知られ、ｉＯＳがそのチェーンに沿ってイベントを渡すとき、ｉＯＳはイベントに応答する責務も譲渡する。この設計パターンにより、イベントハンドリングが協調的かつ動的になる。
関連する章：イベント配信：レスポンダチェーン（ページ３２）
【０５７２】
ＵＩＥｖｅｎｔはタッチ、シェイクモーション、又はリモートコントロールイベントをカプセル化する
多くのイベントはＵＩＫｉｔのＵＩＥｖｅｎｔクラスのインスタンスである。ＵＩＥｖｅｎｔオブジェクトは、アプリがイベントにどのように応答するかを判断するために使用する、イベントについての情報を含んでいる。ユーザアクションが発生するとき、たとえば、指が画面にタッチし、その表面の端から端まで移動するとき、ｉＯＳは処理用のアプリにイベントオブジェクトを継続的に送る。各イベントオブジェクトは、タイプ−タッチ、「シェイキング」モーション、又はリモートコントロール−及びサブタイプを有する。
関連する章：マルチタッチイベント（ページ３８）、モーションイベント（ページ５６）、及びリモートコントロールイベント（ページ７０）
【０５７３】
アプリは、ユーザがそのビューにタッチすると、マルチタッチイベントを受け取る
アプリに応じて、ＵＩＫｉｔコントロール及びジェスチャレコグナイザは、アプリのタッチイベントハンドリングのすべてに対して十分であるかもしれない。アプリがカスタムビューを有する場合でも、ジェスチャレコグナイザを使用することができる。おおまかなやり方として、タッチ中のドローイングなどの、タッチに対するアプリの応答がビュー自体と密接に結合されるとき、ユーザ定義のカスタムタッチイベントハンドリングを書く。これらの場合、低水準イベントハンドリングに関与する。タッチメソッドを実装し、これらのメソッドにおいて、生のタッチイベントを分析し、適切に応答する。
関連する章：マルチタッチイベント（ページ３８）
【０５７４】
アプリはユーザが自分のデバイスを動かすとモーションイベントを受け取る
モーションイベントは、デバイスの位置、方向、及び動きについての情報を提供する。モーションイベントに反応することにより、アプリにわずかだが強力な機能を追加することができる。加速度計データ及びジャイロスコープデータにより、傾斜、回転、及び振動を検出することが可能になる。
モーションイベントは様々な形態で生じるので、様々なフレームワークを使用してモーションイベントを処理することができる。ユーザがデバイスを振ると、ＵＩＫｉｔはＵＩＥｖｅｎｔオブジェクトをアプリに配信する。アプリに高速で連続する加速度計データ及びジャイロスコープデータを受け取ってほしい場合、コアモーションフレームワークを使用する。
関連する章：モーションイベント（ページ５６）
【０５７５】
アプリはユーザがマルチメディアコントロールを操作するとリモートコントロールイベントを受け取る
ｉＯＳコントロール及び外部アクセサリは、リモートコントロールイベントをアプリに送る。これらのイベントにより、ヘッドセットを介して音量を調整することなどの、ユーザがオーディオ及びビデオを制御することが可能になる。マルチメディアリモートコントロールイベントを処理して、アプリをこれらのタイプのコマンドに応答するようにする。
関連する章：リモートコントロールイベント（ページ７０）
【０５７６】
前提条件
この文書は、
・ｉＯＳアプリ開発の基本概念
・アプリのユーザインターフェースを作成する様々な態様
・ビュー及びビューコントローラがどのように働くか、並びにそれらをどのようにカスタマイズするか
に精通していることを想定する。
それらの概念に精通していない場合、Ｓｔａｒｔ  Ｄｅｖｅｌｏｐｉｎｇ  ｉＯＳ  Ａｐｐｓ  Ｔｏｄａｙを読むことから始めるとよい。次いで、Ｖｉｅｗ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ  ｆｏｒ  ｉＯＳ若しくはＶｉｅｗ  Ｃｏｎｔｒｏｌｌｅｒ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ  ｆｏｒ  ｉＯＳのいずれか、又は両方を読むこと。
【０５７７】
参考図書
ｉＯＳデバイスがタッチ及びデバイスモーションのデータを提供するのと同じ方法で、ほとんどのｉＯＳデバイスは、アプリが関心をもつかもしれない低水準データを生成するＧＰＳ及びコンパスハードウェアを有する。Ｌｏｃａｔｉｏｎ  ａｎｄ  Ｍａｐｓ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅは、位置データをどのように受け取り処理するかを説明する。
カーブスムージング及びローパスフィルタの適用などの高度ジェスチャレコグナイザ技法については、ＷＷＤＣ  ２０１２：Ｂｕｉｌｄｉｎｇ  Ａｄｖａｎｃｅｄ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｚｅｒｓを参照されたい。
ｉＯＳレファレンスライブラリ内の多くのサンプルコードプロジェクトは、ジェスチャレコグナイザを使用し、イベントを処理するコードを有する。これらの中には以下のプロジェクトがある。
・Ｓｉｍｐｌｅ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｚｅｒｓは、ジェスチャ認識を理解するための完全な出発点である。このアプリは、タップジェスチャ、スワイプジェスチャ、及び回転ジェスチャをどのように認識するかを実演する。このアプリは、タッチ位置において画像を表示及びアニメ化することによって各ジェスチャに応答する。
・Ｈａｎｄｌｉｎｇ  Ｔｏｕｃｈｅｓ  Ｕｓｉｎｇ  Ｒｅｓｐｏｎｄｅｒ  Ｍｅｔｈｏｄｓ  ａｎｄ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｚｅｒｓは、複数のタッチをどのように処理して画面上のまわりの正方形をドラッグするかを実演する２つのプロジェクトを含む。あるバージョンはジェスチャレコグナイザを使用し、他のバージョンはカスタムタッチイベントハンドリングメソッドを使用する。後者のバージョンは、タッチが発生したときに画面上に現在のタッチフェーズを表示するので、タッチフェーズを理解するために特に有用である。
・ＭｏｖｅＭｅは、タッチイベントに応じてビューをどのようにアニメ化するかを示す。このサンプルを調べて、カスタムタッチイベントハンドリングの理解を進めること。
【０５７８】
ジェスチャレコグナイザ
ＳｗｉｆｔＯｂｊｅｃｔｉｖｅ−Ｃ
ジェスチャレコグナイザは、低水準のイベントハンドリングコードを高水準のアクションに変換する。ジェスチャレコグナイザは、ビューにアタッチするオブジェクトであり、それらにより、コントロールが行う方法でビューがアクションに応答することが可能になる。ジェスチャレコグナイザは、タッチを解釈して、タッチがスワイプ、ピンチ、又は回転などの特定のジェスチャに対応するかどうかを判定する。ジェスチャレコグナイザがそれらの割り当てられたジェスチャを認識する場合、ジェスチャレコグナイザはターゲットオブジェクトにアクションメッセージを送る。ターゲットオブジェクトは、通常、ビューのビューコントローラであり、ビューコントローラは、図１−１に示されたようにジェスチャに応答する。この設計パターンは強力及び簡潔の両方であり、どのアクションにビューが応答するかを動的に決定することができ、ビューを下位分類する必要なしにジェスチャレコグナイザをビューに追加することができる。
【表２】
0006559881.tif 000003
【０５７９】
ジェスチャレコグナイザを使用してイベントハンドリングを簡略化する
ＵＩＫｉｔフレームワークは、一般的なジェスチャを検出する、あらかじめ定義されたジェスチャレコグナイザを提供する。それらの簡潔さにより書く必要があるコードの量が削減されるので、可能なときあらかじめ定義されたジェスチャレコグナイザを使用することが最も良い。加えて、ユーザ定義のジェスチャレコグナイザを書く代わりに標準のジェスチャレコグナイザを使用すると、ユーザが予想するようにアプリが挙動することが保証される。
アプリがチェックマーク又は渦巻きモーションなどのユニークなジェスチャを認識することを望む場合、ユーザ定義のカスタムジェスチャレコグナイザを作成することができる。ユーザ定義のジェスチャレコグナイザをどのように設計及び実装するかを学ぶために、カスタムジェスチャレコグナイザを作成する（ページ２８）を参照されたい。
【０５８０】
内蔵ジェスチャレコグナイザは一般的なジェスチャを認識する
アプリを設計するとき、どのジェスチャを有効にしたいかを考慮すること。次いで、ジェスチャごとに、表１−１に列挙された、あらかじめ定義されたジェスチャレコグナイザのうちの１つが十分であるかどうかを判定すること。
【表３】
0006559881.tif 000004
アプリは、ユーザが予想する方法でのみ、ジェスチャに応答しなければならない。たとえば、ピンチはズームイン及びズームアウトするべきであり、タップは何かを選択するべきである。ジェスチャをどのように正しく使用するかについてのガイドラインについては、アプリがクリックではなくジェスチャに応答するを参照されたい。
【０５８１】
ジェスチャレコグナイザはビューにアタッチされる
あらゆるジェスチャレコグナイザは１つのビューに関連付けられる。それに反して、単一のビューは多くの異なるジェスチャに応じてもよいので、ビューは複数のジェスチャレコグナイザを有することができる。ジェスチャレコグナイザが特定のビュー内で発生したタッチを認識するために、そのビューにジェスチャレコグナイザをアタッチしなければならない。ユーザがそのビューをタッチすると、ジェスチャレコグナイザは、タッチが発生したことのメッセージをビューオブジェクトが受け取る前に受け取る。結果として、ジェスチャレコグナイザはビューの代わりにタッチに応答することができる。
【０５８２】
ジェスチャはアクションメッセージをトリガする
ジェスチャレコグナイザがその指定されたジェスチャを認識すると、ジェスチャレコグナイザはそのターゲットにアクションメッセージを送る。ジェスチャレコグナイザを作成するために、ターゲット及びアクションを用いてジェスチャレコグナイザを初期化する。
【０５８３】
不連続ジェスチャ及び連続ジェスチャ
ジェスチャは不連続又は連続のいずれかである。タップなどの不連続ジェスチャは、１度発生する。ピンチングなどの連続ジェスチャは、ある期間にわたって起こる。不連続ジェスチャの場合、ジェスチャレコグナイザは単一のアクションメッセージをそのターゲットに送る。連続ジェスチャ用のジェスチャレコグナイザは、図１−２に示されたように、マルチタッチシーケンスが終了するまで、そのターゲットにアクションメッセージを送り続ける。
【表４】
0006559881.tif 000005
【０５８４】
ジェスチャレコグナイザを用いてイベントに応答する
アプリに内蔵ジェスチャレコグナイザを追加するために行う３つのことがある。
１．ジェスチャレコグナイザのインスタンスを作成し構成する。
このステップは、ターゲット、アクションを割り当てること、及び、時々（ｎｕｍｂｅｒ０ｆＴａｐｓＲｅｑｕｉｒｅｄなどの）ジェスチャ固有の属性を割り当てることを含む。
２．ジェスチャレコグナイザをビューにアタッチする。
３．ジェスチャを処理するアクションメソッドを実装する。
【０５８５】
インターフェースビルダを使用してジェスチャレコグナイザをアプリに追加する
Ｘｃｏｄｅ内のインターフェースビルダ内で、ユーザインターフェースに任意のオブジェクトを追加するのと同じ方法−オブジェクトライブラリからジェスチャレコグナイザをビューにドラッグする−で、アプリにジェスチャレコグナイザを追加する。これを行うと、ジェスチャレコグナイザは自動的にそのビューにアタッチされるようになる。どのビューにジェスチャレコグナイザがアタッチされたかをチェックし、必要な場合、ｎｉｂファイル内の接続を変更することができる。
ジェスチャレコグナイザオブジェクトを作成した後、アクションメソッドを作成し接続する必要がある。このメソッドは、接続されたジェスチャレコグナイザがそのジェスチャを認識するときはいつでもコールされる。このアクションメソッドの外部でジェスチャレコグナイザを参照する必要がある場合、ジェスチャレコグナイザ用のアウトレットも作成し接続するべきである。コードはリスト１−１に類似するように見えるべきである。
リスト１−１  インターフェースビルダを用いてアプリにジェスチャレコグナイザを追加する
@interface APLGestureRecognizerViewController ( )
@property(nonatomic, strong) IBOutlet UITapGestureRecognizer *tapRecognizer;
@end
@implementation
- (IBAction)displayGestureForTapRecognizer:(UITapGestureRecognizer *)recognizer
／／後でメソッドを実装する．．．
}
@end
【０５８６】
プログラムでジェスチャレコグナイザを追加する
ＵＩＰｉｎｃｈＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒなどの実在するＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒサブクラスのインスタンスを割り振り初期化することにより、プログラムでジェスチャレコグナイザを作成することができる。ジェスチャレコグナイザを初期化するとき、リスト１−２のように、ターゲットオブジェクト及びアクションセレクタを指定する。しばしば、ターゲットオブジェクトはビューのビューコントローラである。
プログラムでジェスチャレコグナイザを作成する場合、ａｄｄＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッドを使用してビューにジェスチャレコグナイザをアタッチする必要がある。リスト１−２は、シングルタップジェスチャレコグナイザを作成し、ジェスチャが認識されるために１つのタップが必要であることを指定し、次いで、ジェスチャレコグナイザオブジェクトをビューにアタッチする。通常、リスト１−２に示されたように、ビューコントローラのｖｉｅｗＤｉｄＬｏａｄメソッド内にジェスチャレコグナイザを作成する。
リスト１−２  プログラムでシングルタップジェスチャレコグナイザを作成する
- (void)viewDidLoad {
［super viewDidLoad];
／／タップジェスチャを作成し初期化する
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(respondToTapGesture:)];
／／ビューにタップジェスチャレコグナイザを追加する
tapRecognizer.numberOfTapsRequired = 1;
／／ビューにタップジェスチャレコグナイザを追加する
[self.view addGestureRecognizer:tapRecognizer];
／／通常nibからビューをローディングした後、任意の追加セットアップを行う
｝
【０５８７】
不連続ジェスチャに応答する
ジェスチャレコグナイザを作成するとき、アクションメソッドにレコグナイザを接続する。このアクションメソッドを使用して、ジェスチャレコグナイザのジェスチャに応答する。リスト１−３は、不連続ジェスチャに応答する一例を提供する。ジェスチャレコグナイザがアタッチされたビューをユーザがタップすると、ビューコントローラは「タップ」と言う画像ビューを表示する。ＳｈｏｗＧｅｓｔｕｒｅＦｏｒＴａｐＲｅｃｏｇｎｉｚｅｒ：メソッドは、レコグナイザのＩｏｃａｔｉｏｎＩｎＶｉｅｗ：プロパティからビュー内のジェスチャの位置を特定し、次いで、その位置に画像を表示する。
注：次の３つのコード例は、Ｓｉｍｐｌｅ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｚｅｒｓサンプルコードプロジェクトからであり、より多くのコンテキストについてそれを調べることができる。
リスト１−３  ダブルタップジェスチャを処理する
- (IBAction)showGestureForTapRecognizer:(UITapGestureRecognizer *)recognizer {
／／ジェスチャの位置を取得する
CGPoint location = [recognizer locationInView:self.view];
／／その位置に画像ビューを表示する
[self drawImageForGestureRecognizer:recognizer atPoint:location];
／／画像がフェードアウトするようにアニメ化する
[UIView animateWithDuration:0.5 animations:^{
self.imageView.alpha = 0.0;
}];
}
各ジェスチャレコグナイザはそれ自体のプロパティのセットを有する。たとえば、リスト１−４では、ＳｈｏｗＧｅｓｔｕｒｅＦｏｒＳｗｉｐｅＲｅｃｏｇｎｉｚｅｒ：メソッドは、スワイプジェスチャレコグナイザのｄｉｒｅｃｔｉｏｎプロパティを使用して、ユーザが左にスワイプしたか又は右にスワイプしたかを判定する。次いで、ＳｈｏｗＧｅｓｔｕｒｅＦｏｒＳｗｉｐｅＲｅｃｏｇｎｉｚｅｒ：メソッドは、その値を使用してスワイプと同じ方向に画像をフェードアウトさせる。
リスト１−４  左又は右のスワイプジェスチャに応答する
／／スワイプジェスチャに応答する
- (IBAction)ShowGestureForSwipeRecognizer:(UISwipeGestureRecognizer *)recognizer
{
／／ジェスチャの位置を取得する
CGPoint location = [recognizer locationInView:self.view];
／／その位置に画像ビューを表示する
[self drawImageForGestureRecognizer:recognizer atPoint:location];
／／ジェスチャが左スワイプである場合、
／／現在位置の左に終了位置を指定する
if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
location.x -= 220.0;
} else {
location.x += 220.0;
}
／／スワイプの方向にフェードアウトするように画像ビューをアニメ化する
[UIView animateWithDuration:0.5 animations:^{
self.imageView.alpha = 0.0;
self.imageView.center = location;
}];
}
【０５８８】
連続ジェスチャに応答する
連続ジェスチャにより、ジェスチャが発生しているときにアプリがジェスチャに応答することが可能になる。たとえば、アプリは、ユーザがピンチしている間にズームし、画面のまわりのオブジェクトをユーザがドラッグすることを可能にすることができる。
リスト１−５は、ジェスチャと同じ回転角にある「回転」画像を表示し、ユーザが回転を停止すると、水平方向に後ろに回転しながら適当な位置でフェードアウトするように画像をアニメ化する。ユーザが自分の指を回転させるとき、両方の指が上がるまで、ＳｈｏｗＧｅｓｔｕｒｅＦｏｒＲｏｔａｔｉｏｎＲｅｃｏｇｎｉｚｅｒ：メソッドが継続的にコールされる。
リスト１−５  回転ジェスチャに応答する
／／回転ジェスチャに応答する
-(IBAction)showGestureForRotationRecognizer:(UIRotationGestureRecognizer *)recognizer {
／／ジェスチャの位置を取得する
CGPoint location = [recognizer locationInView:self.view];
／／ジェスチャの回転と一致するように
／／画像ビューの回転角を設定する
CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]);
self.imageView.transform = transform;
／／その位置に画像ビューを表示する
[self drawImageForGestureRecognizer:recognizer atPoint:location];
／／ジェスチャが終了するか、又は取り消された場合、
／／水平方向に後にフェードアウトするアニメーションを始める
if(([recognizer state] == UIGestureRecognizerStateEnded) || ([recognizer state] == UIGestureRecognizerStateCancelled)) {
[UIView animateWithDuration:0.5 animations:^{
self.imageView.alpha = 0.0;
self.imageView.transform = CGAffineTransformIdentity;
}];
}
}
メソッドがコールされるたびに、画像はｄｒａｗＩｍａｇｅＦｏｒＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッド内で不透明になるように設定される。ジェスチャが完了すると、画像はａｎｉｍａｔｅＷｉｔｈＤｕｒａｔｉｏｎ：メソッド内で透明になるように設定される。ｓｈｏｗＧｅｓｔｕｒｅＦｏｒＲｏｔａｔｉｏｎＲｅｃｏｇｎｉｚｅｒ：メソッドは、ジェスチャレコグナイザの状態をチェックすることにより、ジェスチャが完了したかどうかを判定する。これらの状態は、ジェスチャレコグナイザは有限状態機械内で動作する（ページ１８）において、より詳細に説明される。
【０５８９】
ジェスチャレコグナイザがどのように対話するかを定義する
しばしば、ジェスチャレコグナイザをアプリに追加するとき、レコグナイザが互いに、又はアプリ内の任意の他のタッチイベントハンドリングコードとどのように対話することを望むかについて明確にする必要がある。これを行うために、最初に、ジェスチャレコグナイザがどのように動作するかについてもう少し理解する必要がある。
【０５９０】
ジェスチャレコグナイザは有限状態機械内で動作する
ジェスチャレコグナイザは、あらかじめ定義された方法である状態から別の状態に遷移する。各状態から、ジェスチャレコグナイザは、それらがある特定の条件を満たすかどうかに基づいて、いくつかの可能な次の状態のうちの１つに移行することができる。精密な状態機械は、図１−３に示されたように、ジェスチャレコグナイザが不連続か連続かに応じて変化する。すべてのジェスチャレコグナイザは、可能状態（ＬｌｌＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＰｏｓｓｉｂｌｅ）から始まる。ジェスチャレコグナイザは受け取った任意のマルチタッチシーケンスを分析し、分析中、ジェスチャレコグナイザはジェスチャを認識するか、又はジェスチャの認識に失敗する。ジェスチャの認識に失敗することは、ジェスチャレコグナイザが失敗状態（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＦａｉｌｅｄ）に遷移することを意味する。
【表５】
0006559881.tif 000006
不連続ジェスチャレコグナイザがそのジェスチャを認識すると、ジェスチャレコグナイザは可能から認識（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＲｅｃｏｇｎｉｚｅｄ）に遷移し、認識は完了する。
連続ジェスチャの場合、ジェスチャが最初に認識されると、ジェスチャレコグナイザは可能から開始（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＢｅｇａｎ）に遷移する。次いで、ジェスチャレコグナイザは開始から変更（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＣｈａｎｇｅｄ）に遷移し、ジェスチャが発生するにつれて変更から変更に移行し続ける。ユーザの最後の指がビューから上がると、ジェスチャレコグナイザは終了状態（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＥｎｄｅｄ）に遷移し、認識は完了する。終了状態は認識状態用のエイリアスであることに注意されたい。
連続ジェスチャ用のレコグナイザは、ジェスチャが予想されたパターンにもはや適合しないと判断した場合、変更から取消（ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＣａｎｃｅｌｌｅｄ）に遷移することもできる。
ジェスチャレコグナイザが状態を変更するたびに、ジェスチャレコグナイザは、失敗又は取消に遷移しないかぎり、そのターゲットにアクションメッセージを送る。したがって、不連続ジェスチャレコグナイザは、可能から認識に遷移したときに単一のアクションメッセージのみを送る。連続ジェスチャレコグナイザは、状態を変更するにつれて、多くのアクションメッセージを送る。
ジェスチャレコグナイザが認識（又は終了）状態に達すると、ジェスチャレコグナイザはその状態をリセットして可能に戻る。可能に戻る遷移はアクションメッセージをトリガしない。
【０５９１】
他のジェスチャレコグナイザと対話する
ビューは、それにアタッチされた２つ以上のジェスチャレコグナイザを有することができる。ビューのｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒｓプロパティを使用して、どのジェスチャレコグナイザがビューにアタッチされているかを判定する。それぞれ、ａｄｄＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッド及びｒｅｍｏｖｅＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッドを用いて、ジェスチャレコグナイザをビューに追加したり、又はビューから除去することにより、ビューがどのようにジェスチャを処理するかを動的に変更することもできる。
ビューがそれにアタッチされた複数のジェスチャレコグナイザを有するとき、競合するジェスチャレコグナイザがタッチイベントをどのように受け取り分析するかを変更したい場合がある。デフォルトでは、どのジェスチャレコグナイザが最初にタッチを受け取るかについて設定された順序はなく、この理由で、毎回異なる順序でジェスチャレコグナイザにタッチを渡すことができる。このデフォルトの挙動を、
・あるジェスチャレコグナイザが別のジェスチャレコグナイザより前にタッチを分析するべきであると指定する
・２つのジェスチャレコグナイザが同時に動作することを可能にする
・ジェスチャレコグナイザがタッチを分析することを防止する
ようにオーバーライドすることができる。
ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒクラスのメソッド、デリゲートメソッド、及びサブクラスによってオーバーライドされたメソッドを使用して、これらの挙動を有効にする。
【０５９２】
２つのジェスチャレコグナイザに対する特定の順序を宣言する
スワイプジェスチャ及びパンジェスチャを認識することを望み、これら２つのジェスチャが別個のアクションをトリガすることを望むと想像する。デフォルトでは、ユーザがスワイプしようと試みると、ジェスチャはパンとして解釈される。これは、スワイピングジェスチャが、スワイプ（非連続ジェスチャ）として解釈されるために必要な条件を満たす前に、パン（連続ジェスチャ）として解釈されるために必要な条件を満たすからである。
ビューがスワイプとパンの両方を認識するために、パンジェスチャレコグナイザがタッチイベントを分析する前に、スワイプジェスチャレコグナイザがタッチイベントを分析することを望む。タッチがスワイプであるとスワイプジェスチャレコグナイザが判定した場合、パンジェスチャレコグナイザはタッチを分析する必要が決してない。タッチがスワイプではないとスワイプジェスチャレコグナイザが判定した場合、スワイプジェスチャレコグナイザは失敗状態に移行し、パンジェスチャレコグナイザがタッチイベントの分析を開始するべきである。
リスト１−６のように、遅らせたいジェスチャレコグナイザに対してｒｅｑｕｉｒｅＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＴｏＦａｉｌ：メソッドをコールすることにより、２つのジェスチャレコグナイザ間のこのタイプの関係を示す。このリストでは、両方のジェスチャレコグナイザは同じビューにアタッチされている。
リスト１−６  パンジェスチャレコグナイザはスワイプジェスチャレコグナイザが失敗することを必要とする
-(void)viewDidLoad {
[super viewDidLoad];
／／通常nibからビューをローディングした後、任意の追加セットアップを行う
[self.panRecognizer requireGestureRecognizerToFail:self.swipeRecognizer];
}
ｒｅｑｕｉｒｅＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＴｏＦａｉｌ：メソッドは受取り側にメッセージを送り、受け取るレコグナイザが開始することができる前に、失敗しなければならないいくつかのＯｔｈｅｒＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒを指定する。他のジェスチャレコグナイザが失敗状態に遷移するのを待っている間、受け取るレコグナイザは可能状態に留まる。他のジェスチャレコグナイザが失敗した場合、受け取るレコグナイザはタッチイベントを分析し、その次の状態に移行する。一方、他のジェスチャレコグナイザが認識又は開始に遷移した場合、受け取るレコグナイザは失敗状態に移行する。状態遷移の詳細については、ジェスチャレコグナイザは有限状態機械内で動作する（ページ１８）を参照されたい。
注：アプリがシングルタップとダブルタップの両方を認識し、ダブルタップレコグナイザが失敗することをシングルタップジェスチャレコグナイザが必要としない場合、ユーザがダブルタップするときでも、ダブルタップアクションの前にシングルタップアクションを受け取ることを予想するべきである。最良のユーザ体験は、一般に、複数のタイプのアクションを可能にするので、この挙動は意図的である。
これら２つのアクションが相互に排他的であることを望む場合、シングルタップレコグナイザは、ダブルタップレコグナイザが失敗することを必要としなければならない。しかしながら、ダブルタップレコグナイザが失敗するまでシングルタップレコグナイザは遅延するので、シングルタップアクションはユーザ入力の後少し遅れる。
【０５９３】
ジェスチャレコグナイザがタッチを分析することを防止する
ジェスチャレコグナイザにデリゲートオブジェクトを追加することにより、ジェスチャレコグナイザの挙動を変更することができる。ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＤｅｌｅｇａｔｅプロトコルは、ジェスチャレコグナイザがタッチを分析することを防止することができる２〜３の方法を提供する。両方ともＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＤｅｌｅｇａｔｅプロトコルのオプションメソッドである、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｅｉｖｅＴｏｕｃｈ：メソッド又はｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｈｏｕｌｄＢｅｇｉｎ：メソッドのいずれかを使用する。
タッチが始まると、ジェスチャレコグナイザがそのタッチを考慮するべきか否かを直ちに判定することができる場合、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｅｉｖｅＴｏｕｃｈ：メソッドを使用する。このメソッドは、新しいタッチがあるたびにコールされる。ＮＯを返すことは、タッチが発生したことをジェスチャレコグナイザが通知されることを防止する。デフォルトの値はＹＥＳである。このメソッドはジェスチャレコグナイザの状態を変更しない。
リスト１−７は、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｅｉｖｅＴｏｕｃｈ：デリゲートメソッドを使用して、ジェスチャレコグナイザがカスタムサブビュー内にあるタッチを受け取ることを防止する。タッチが発生すると、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｅｉｖｅＴｏｕｃｈ：メソッドがコールされる。ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｅｉｖｅＴｏｕｃｈ：メソッドは、ユーザがカスタムビューにタッチしたかどうかを判定し、そうである場合、タップジェスチャレコグナイザがタッチイベントを受け取ることを防止する。
リスト１−７  ジェスチャレコグナイザがタッチを受け取ることを防止する
- (void)viewDidLoad {
[super viewDidLoad];
／／タップジェスチャレコグナイザにデリゲートを追加する
self.tapGestureRecognizer.delegate = self;
}
／／UIGestureRecognizerDelegateメソッドを実装する
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizershouldReceiveTouch:(UITouch *)touch{
／／タッチがカスタムサブビューの内部であるどうかを判定する
if([touch view] == self.customSubview){
／／そうである場合、デリゲートのジェスチャレコグナイザのすべてが
／／タッチを受け取ることを防止する
return NO;
}
return YES;
}
ジェスチャレコグナイザがタッチを分析するべきか否かを判断する前に、可能なかぎり待つ必要がある場合、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｈｏｕｌｄＢｅｇｉｎ：デリゲートメソッドを使用する。一般に、ジェスチャレコグナイザと競合するカスタムタッチイベントハンドリングを有するＵＩＶｉｅｗサブクラス又はＵＩＣｏｎｔｒｏｌサブクラスを有する場合、このメソッドを使用する。ＮＯを返すと、ジェスチャレコグナイザは直ちに失敗し、他のタッチハンドリングが進むことが可能になる。このメソッドは、ビュー又はコントロールがタッチを受け取ることをジェスチャレコグナイザが防止する場合、ジェスチャレコグナイザ が可能状態から遷移するように試みるときにコールされる。
ビュー又はビューコントローラがジェスチャレコグナイザのデリゲートになることができない場合、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｈｏｕｌｄＢｅｇｉｎ：ＵＩＶｉｅｗメソッドを使用することができる。このメソッドのシグネチャ及び実装は同じである。
【０５９４】
同時ジェスチャ認識を許可する
デフォルトでは、２つのジェスチャレコグナイザは、それらそれぞれのジェスチャを同時に認識することはできない。しかし、たとえば、ユーザが同時にビューをピンチ及び回転できることを望むと仮定する。ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＤｅｌｅｇａｔｅプロトコルのオプションメソッドである、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｏｇｎｉｚｅＳｉｍｕＩｔａｎｅｏｕｓｌｙＷｉｔｈＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッドを実装することにより、デフォルトの挙動を変更する必要がある。このメソッドは、あるジェスチャレコグナイザのジェスチャの分析が、別のジェスチャレコグナイザがそのジェスチャを認識することをブロックするはずであるとき、又はその逆のときにコールされる。このメソッドはデフォルトでＮＯを返す。２つのジェスチャレコグナイザがそれらのジェスチャを同時に認識することを望むとき、ＹＥＳを返す。
注：デリゲートを実装し、ジェスチャレコグナイザのうちの１つのみにＹＥＳを返して同時認識を可能にする必要がある。しかしながら、それは、他のジェスチャレコグナイザのデリゲートがＹＥＳを返す可能性があるので、ＮＯを返すことが必ずしも同時認識を防止するとはかぎらないことも意味する。
【０５９５】
２つのジェスチャレコグナイザ間の一方向関係を指定する
２つのレコグナイザが互いとどのように対話するかを制御したいが、一方向関係を指定する必要がない場合、ｃａｎＰｒｅｖｅｎｔＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：サブクラスメソッド又はｃａｎＢｅＰｒｅｖｅｎｔｅｄＢｙＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：サブクラスメソッドのいずれかをオーバーライドして、ＮＯ（デフォルトはＹＥＳ）を返すことができる。たとえば、回転ジェスチャがピンチジェスチャを防止することを望むが、ピンチジェスチャが回転ジェスチャを防止することを望まない場合、
[rotationGestureRecognizer canPreventGestureRecognizer:pinchGestureRecognizer];
を指定し、ＮＯを返すように回転ジェスチャレコグナイザのサブクラスメソッドをオーバーライドするはずである。サブクラスＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒをどのように下位分類するかの詳細については、カスタムジェスチャレコグナイザを作成する（ページ２８）を参照されたい。
いずれのジェスチャも他のジェスチャを防止しない場合、同時ジェスチャ認識を許可する（ページ２３）に記載されたように、ｇｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：ｓｈｏｕｌｄＲｅｃｏｇｎｉｚｅＳｉｍｕｌｔａｎｅｏｕｓｌｙＷｉｔｈＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ：メソッドを使用する。デフォルトでは、２つのジェスチャを同時に認識することはできないので、ピンチジェスチャが回転を防止し、その逆もそうである。
【０５９６】
他のユーザインターフェースコントロールと対話する
ｉＯＳ６．０以降では、デフォルトのコントロールアクションは、ジェスチャレコグナイザの挙動を重複させることを防止する。たとえば、ボタン用のデフォルトアクションはシングルタップである。ボタンの親ビューにアタッチされたシングルタップジェスチャレコグナイザを有し、ユーザがボタンをタップする場合、ボタンのアクションメソッドは、ジェスチャレコグナイザの代わりにタッチイベントを受け取る。これは、以下を含むデフォルトのコントロール用アクションと重複するジェスチャレコグナイザのみに適用される。
・ＵＩＢｕｔｔｏｎ、ＵＩＳｗｉｔｃｈ、ＵＩＳｔｅｐｐｅｒ、ＵＩＳｅｇｍｅｎｔｅｄＣｏｎｔｒｏＩ、及びＵＩＰａｇｅＣｏｎｔｒｏｌに対する１本指のシングルタップ
・スライダに平行な方向へのＵＩＳｌｉｄｅｒのノブに対する１本指のスワイプ
・スイッチに平行な方向へのＵＩＳｗｉｔｃｈのノブに対する１本指のパンジェスチャ
これらのコントロールのうちの１つのカスタムサブクラスを有し、デフォルトアクションを変更したい場合、親ビューの代わりにコントロールに直接ジェスチャレコグナイザをアタッチする。次いで、ジェスチャレコグナイザは最初にタッチイベントを受け取る。いつものように、特に標準コントロールのデフォルト挙動をオーバーライドするときに、アプリが直感的なユーザ体験を提供することを保証するために、ｉＯＳ  Ｈｕｍａｎ  Ｉｎｔｅｒｆａｃｅ  Ｇｕｉｄｅｌｉｎｅｓを必ず読むこと。
【０５９７】
ジェスチャレコグナイザは生のタッチイベントを解釈する
今までのところ、ジェスチャ、及びアプリがどのようにジェスチャを認識し、ジェスチャに応答するかについて学んできた。しかしながら、カスタムジェスチャレコグナイザを作成するために、又はジェスチャレコグナイザがビューのタッチイベントハンドリングとどのように対話するかを制御するために、タッチ及びイベントに関してより詳細に考える必要がある。
【０５９８】
イベントは現在のマルチタッチシーケンス用のすべてのタッチを含む
ｉＯＳでは、タッチは、画面上の指の存在又は動きである。ジェスチャは、ＵＩＴｏｕｃｈオブジェクトによって表される１つ又は複数のタッチを有する。たとえば、ピンチクローズジェスチャは、２つのタッチ−反対方向から互いに向かう画面上の２本の指を有する。
イベントは、マルチタッチシーケンスの間に発生するすべてのタッチを包含する。マルチタッチシーケンスは、指が画面にタッチしたときに始まり、最後の指が上がったときに終わる。指が動くにつれて、ｉＯＳはイベントにタッチオブジェクトを送る。マルチタッチイベントは、タイプＵＩＥｖｅｎｔＴｙｐｅＴｏｕｃｈｅｓのＵＩＥｖｅｎｔオブジェクトによって表される。
各タッチオブジェクトは１本の指のみを追跡し、マルチタッチシーケンスの長さだけ続く。シーケンスの間、ＵＩＫｉｔは指を追跡し、タッチオブジェクトの属性を更新する。これらの属性としては、タッチのフェーズ、ビュー内のタッチの位置、タッチの前の位置、及びタッチのタイムスタンプが挙げられる。
タッチフェーズは、タッチが動いているか静止しているかにかかわらず、タッチがいつ始まったか、及びタッチがいつ終わったが−すなわち、指が画面をもはやタッチしていないときを示す。図１−４に描写されたように、アプリは、任意のタッチの各フェーズの間にイベントオブジェクトを受け取る。
【表６】
0006559881.tif 000007
注：指はマウスポインタよりも厳密ではないユーザが画面にタッチすると、接触領域は実際には楕円形であり、ユーザが予想するよりも少し低くなる傾向がある。この「接触パッチ」は、指のサイズ及び方向、圧力量、どの指が使用されるか、並びに他の要因に基づいて変化する。基礎をなすマルチタッチシステムは、ためにこの情報を分析し、シングルタッチポイントを算出し、その結果、これを行うためにユーザ定義のコードを書く必要がない。
【０５９９】
アプリはタッチハンドリングメソッドにおいてタッチを受け取る
マルチタッチシーケンスの間、アプリは、所与のタッチフェーズの間の新しい又は変化したタッチが存在するとき、これらのメッセージを送る。アプリは、
・１つ又は複数の指が画面上をタッチダウンしたとき、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールし、
・１つ又は複数の指が動いたとき、ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールし、
・１つ又は複数の指が画面から上がったとき、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールし、
・着信電話呼出しなどのシステムイベントによってタッチシーケンスが取り消されたとき、ｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールする。
これらのメソッドの各々はタッチフェーズに関連付けられ、たとえば、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッドはＵＩＴｏｕｃｈＰｈａｓｅＢｅｇａｎに関連付けられる。タッチオブジェクトのフェーズは、そのｐｈａｓｅプロパティに記憶される。
注：これらのメソッドは、ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＢｅｇａｎ及びＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＥｎｄｅｄなどのジェスチャレコグナイザの状態には関連付けられない。ジェスチャレコグナイザの状態は、厳密には、認識されているタッチオブジェクトのフェーズではなく、ジェスチャレコグナイザ自体のフェーズを表記する。
【０６００】
ビューへのタッチの配信を規定する
ジェスチャレコグナイザより前にビューがタッチを受け取ることを望むときがあり取る。しかし、ビューへのタッチの配信経路を変更することができる前に、デフォルトの挙動を理解する必要がある。簡単なケースでは、タッチが発生すると、ＵＩＡｐｐｌｉｃａｔｉｏｎオブジェクトからＵＩＷｉｎｄｏｗオブジェクトにタッチオブジェクトが渡される。次いで、ウィンドウは、ビューオブジェクト自体にタッチを渡す前に、タッチが発生したビュー（又はそのビューのスーパービュー）にアタッチされた任意のジェスチャレコグナイザにタッチを最初に送る。
【表７】
0006559881.tif 000008
【０６０１】
ジェスチャレコグナイザはタッチを認識する最初の機会を取得する
ウィンドウは、ジェスチャレコグナイザが最初にタッチを分析することができるように、ビューへのタッチオブジェクトの配信を遅らせる。遅延の間、ジェスチャレコグナイザがタッチジェスチャを認識した場合、ウィンドウはビューにタッチオブジェクトを決して配信せず、また、認識されたシーケンスの一部であった、ウィンドウが前に送った任意のタッチオブジェクトを取り消す。
たとえば、２本指のタッチを必要とする不連続ジェスチャ用のジェスチャレコグナイザを有する場合、これは２つの別々のタッチオブジェクトに変換する。タッチが発生するにつれて、タッチオブジェクトは、アプリのオブジェクトからタッチが発生したビュー用のウィンドウオブジェクトに渡され、図１−６に描写されたように、以下のシーケンスが発生する。
【表８】
0006559881.tif 000009
１．ウィンドウが、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッドを通して、ジェスチャレコグナイザに開始フェーズ内の２つのタッチオブジェクトを送る。ジェスチャレコグナイザはまだジェスチャを認識せず、そのため、その状態は可能である。ジェスチャレコグナイザがアタッチされたビューにウィンドウがこれらの同じタッチを送る。
２．ウィンドウが、ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドを通して、ジェスチャレコグナイザに移動フェーズ内の２つのタッチオブジェクトを送る。レコグナイザはまだジェスチャを検出せず、まだ可能状態にある。次いで、ウィンドウがアタッチされたビューにこれらのタッチを送る。
３．ウィンドウが、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドを通して、ジェスチャレコグナイザに終了フェーズ内の１つのタッチオブジェクトを送る。このタッチオブジェクトは、ジェスチャ用の十分な情報をもたらさないが、ウィンドウはアタッチされたビューからのオブジェクトを保留する。
４．ウィンドウが、終了フェーズ内の他のタッチオブジェクトを送る。ジェスチャレコグナイザは、今やそのジェスチャを認識し、そのため、ジェスチャレコグナイザはその状態を認識に設定する。最初のアクションメッセージが送られる直前に、ビューは、ｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールして、開始フェーズ及び移動フェーズにおいて前に送られたタッチオブジェクトを無効にする。終了フェーズ内のタッチが取り消される。
次に、ジェスチャレコグナイザが分析していたこのマルチタッチシーケンスがそのジェスチャではないと、最後のステップにおいてジェスチャレコグナイザが判断することを想定する。ジェスチャレコグナイザは、その状態をＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＦａｉｌｅｄに設定する。次いで、ウィンドウは、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メッセージ内のアタッチされたビューに終了フェーズ内の２つのタッチオブジェクトを送る。
連続ジェスチャ用のジェスチャレコグナイザは、タッチオブジェクトが終了フェーズに達する前にそのジェスチャを認識する可能性が高いことを除いて、同様のシーケンスに従う。そのジェスチャを認識すると、ジェスチャレコグナイザはその状態をＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅＢｅｇａｎ（未認識）に設定する。ウィンドウは、アタッチされたビューではなくジェスチャレコグナイザに、マルチタッチシーケンス内のすべての後続のタッチオブジェクトを送る。
【０６０２】
ビューへのタッチの配信に作用する
いくつかの方法で、いくつかのＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒプロパティの値を変更して、デフォルトの配信経路を変更することができる。これらのプロパティのデフォルト値を変更した場合、挙動における以下の違いを取得する。
・ｄｅｌａｙｓＴｏｕｃｈｅｓＢｅｇａｎ（デフォルトはＮＯ）−通常、ウィンドウは、開始フェーズ及び移動フェーズ内のタッチオブジェクトをビュー及びジェスチャレコグナイザに送る。ｄｅｌａｙｓＴｏｕｃｈｅｓＢｅｇａｎをＹＥＳに設定すると、ウィンドウが開始フェーズ内のタッチオブジェクトをビューに配信することが防止される。これにより、ジェスチャレコグナイザがそのジェスチャを認識すると、タッチイベントのどの部分もアタッチされたビューに配信されなかったことが保証される。プロパティはインターフェースフィールを無反応にすることができるので、このプロパティを設定するときは慎重であること。
この設定により、ＵＩＳｃｒｏｌｌＶｉｅｗ上のｄｅｌａｙｓＣｏｎｔｅｎｔＴｏｕｃｈｅｓプロパティに同様の挙動が提供される。この場合、タッチが始まった後すぐにスクローリングが始まると、スクロールビューオブジェクトのサブビューはタッチを決して受け取らず、そのため、ビジュアルフィードバックのフラッシュがない。
・ｄｅｌａｙｓＴｏｕｃｈｅｓＥｎｄｅｄ（デフォルトはＹＥＳ）−このプロパティがＹＥＳに設定されると、ジェスチャが後で取り消したいであろうアクションをビューが競合しないことが保証される。ジェスチャレコグナイザがタッチイベントを解析しているとき、ウィンドウは、アタッチされたビューに終了フェーズ内のタッチオブジェクトを配信しない。ジェスチャレコグナイザがそのジェスチャを認識した場合、タッチオブジェクトは取り消される。ジェスチャレコグナイザがそのジェスチャを認識しない場合、ウィンドウは、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メッセージを通して、ビューにこれらのオブジェクトを配信する。このプロパティをＮＯに設定すると、ジェスチャレコグナイザと同時に、ビューが終了フェーズ内のタッチオブジェクトを分析することが可能になる。
たとえば、ビューが２つのタップを必要とするタップジェスチャレコグナイザを有し、ユーザがビューをダブルタップすることを考える。プロパティがＹＥＳに設定されると、ビューは、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：、及びｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：を取得する。このプロパティがＮＯに設定された場合、ビューは以下のメッセージのシーケンス：ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、及びｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：を取得し、それは、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：において、ビューがダブルタップを認識できることを意味する。
ジェスチャレコグナイザがそのジェスチャの一部ではないと判定したタッチを検出した場合、ジェスチャレコグナイザはそのビューに直接タッチを渡すことができる。これを行うために、ジェスチャレコグナイザは、それ自体に対してｉｇｎｏｒｅＴｏｕｃｈ：ｆｏｒＥｖｅｎｔ：をコールし、タッチオブジェクト内で渡す。
【０６０３】
カスタムジェスチャレコグナイザを作成する
カスタムジェスチャレコグナイザを実装するために、最初にＸｃｏｄｅ内でＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒのサブクラスを作成する。次いで、サブクラスのヘッダファイル内に以下の重要な指示文を追加する。
#import 
次に、ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｕｂｃｌａｓｓ．ｈからヘッダファイルに以下のメソッド宣言分をコピーする。これらは、サブクラス内でオーバーライドするメソッドである。
−(void)reset;
−(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
−(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
−(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
−(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
これらのメソッドは、アプリはタッチハンドリングメソッドにおいてタッチを受け取る（ページ２５）において前に記載された、対応するタッチイベントハンドリングメソッドとまさに同じシグネチャ及び挙動を有する。オーバーライドするメソッドのすべてにおいて、メソッドがヌル実装を有する場合でも、スーパークラス実装をコールしなければならない。
ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｕｂｃｌａｓｓ．ｈ内のｓｔａｔｅプロパティは、今や、ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒ．ｈ内のように、読取り専用ではなく読み書きできることに注意されたい。サブクラスは、そのプロパティにＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒＳｔａｔｅ定数を割り当てることにより、その状態を変更する。
【０６０４】
カスタムジェスチャレコグナイザ用のタッチイベントハンドリングメソッドを実装する
カスタムジェスチャレコグナイザのための実装の中心は、４つのメソッド：ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：、及びｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：である。これらのメソッドの中で、ジェスチャレコグナイザの状態を設定することにより、低水準タッチイベントをジェスチャ認識に変換する。リスト１−８は、不連続シングルタッチチェックマークジェスチャ用のジェスチャレコグナイザを作成する。ジェスチャレコグナイザは、クライアントがこの値を取得することができるように、ジェスチャの中心点−アップストロークが始まる点−を記録する。
この例は単一のビューのみを有するが、ほとんどのアプリは多くのビューを有する。一般に、複数のビューをスパンするジェスチャを正しく認識することができるように、タッチ位置を画面の座標系に変換するべきである。
リスト１−８  チェックマークジェスチャレコグナイザの実装
#import 
／／カスタムサブクラスに実装された
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
if ([touches count] != 1) {
self.state=UIGestureRecognizerStateFailed;
return;
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
if (self.state == UIGestureRecognizerStateFailed) return;
UIWindow *win = [self.view window];
CGPoint nowPoint = [touches.anyObject locationInView:win];
CGPoint nowPoint = [touches.anyObject locationInView:self.view];
CGPoint prevPoint = [touches.anyObject previousLocationInView:self.view];
／／strokeUpはプロパティである
if (!self.strokeUp) {
／／ダウンストローク上で、ｘとｙの両方は正の方向に増大する
If (nowPoint.x ＞= prevPoint.x && nowPoint.y ＞= prevPoint.y) {
self.midPoint =nowPoint;
／／アップストロークでは、ｘの値は増大するが、ｙの値は減少する
} else if (nowPoint.x ＞= prevPoint.x && nowPoint.y ＜= prevPoint.y) {
self.strokeUp = YES;
} else {
self.state = UIGestureRecognizerStateFailed;
}
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
if ((self.state == UIGestureRecognizerStatePossible) && self.strokeUp) {
self.state = UIGestureRecognizerStateRecognized;
}
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesCancelled:touches withEvent: event];
self.midpoint = CGPointZero;
self.strokeUp = NO;
self.state = UIGestureRecognizerStateFailed;
}
ジェスチャレコグナイザは有限状態機械内で動作する（ページ１８）に記載されたように、不連続ジェスチャ及び連続ジェスチャに関する状態遷移は異なる。カスタムジェスチャレコグナイザを作成するとき、カスタムジェスチャレコグナイザに関係する状態を割り当てることにより、カスタムジェスチャレコグナイザが不連続か連続かを示す。一例として、リスト１−８のチェックマークジェスチャレコグナイザは不連続なので、その状態を開始又は変更に決して設定しない。
ジェスチャレコグナイザを下位分類するときに行う必要がある最も重要なことは、ジェスチャレコグナイザの状態を正確に設定することである。ｉＯＳは、ジェスチャレコグナイザが予想されたように相互作用するために、ジェスチャレコグナイザの状態を知る必要がある。たとえば、同時認識を許可することを望むか、又はジェスチャレコグナイザが失敗することを必要とする場合、ｉＯＳはレコグナイザの現在状態を理解する必要がある。
カスタムジェスチャレコグナイザを作成することの詳細については、ＷＷＤＣ  ２０１２：Ｂｕｉｌｄｉｎｇ  Ａｄｖａｎｃｅｄ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｚｅｒｓを参照されたい。
【０６０５】
ジェスチャレコグナイザの状態をリセットする
ジェスチャレコグナイザが認識／終了、取消、又は失敗に遷移した場合、ＵＩＧｅｓｔｕｒｅＲｅｃｏｇｎｉｚｅｒクラスは、ジェスチャレコグナイザが可能に戻る直前にリセットメソッドをコールする。
リスト１−９のように、レコグナイザがジェスチャを認識することにおいて新しい試みの準備ができるように、リセットメソッドを実装して任意の内部状態をリセットする。ジェスチャレコグナイザがこのメソッドから戻った後、ジェスチャレコグナイザは進行中のタッチに対するこれ以上の更新を受け取らない。
リスト１−９  ジェスチャレコグナイザをリセットする
− (void)reset {
[super reset];
self.midPoint = CGPointZero;
self.strokeUp = NO;
}
【０６０６】
イベント配信：レスポンダチェーン
ＳｗｉｆｔＯｂｊｅｃｔｉｖｅ−Ｃ
自分のアプリを設計するとき、イベントに動的に応答することを望む可能性が高い。たとえば、タッチは画面上の多くの異なるオブジェクトにおいて発生することができ、どのオブジェクトが所与のイベントに応答することを望むかを判断し、そのオブジェクトがイベントをどのように受け取るかを理解する必要がある。
ユーザ生成イベントが発生すると、ＵＩＫｉｔは、そのイベントを処理するために必要な情報を含んでいるイベントオブジェクトを作成する。次いで、ＵＩＫｉｔは、アクティブなアプリのイベントキュー内にそのイベントオブジェクトを置く。タッチイベントの場合、そのオブジェクトはＵＩＥｖｅｎｔオブジェクト内にパッケージ化された１組のタッチである。モーションイベントの場合、イベントオブジェクトは、どのフレームワークを使用するか、及びどのタイプのモーションイベントに関心があるかに応じて変化する。
イベントは、それを処理することができるオブジェクトに配信されるまで、特定の経路に沿って移動する。最初に、シングルトンＵＩＡｐｐｌｉｃａｔｉｏｎオブジェクトが、キューの先頭からイベントを取り、それを処理用に送出する。通常、シングルトンＵＩＡｐｐｌｉｃａｔｉｏｎオブジェクトは、アプリのキーウィンドウオブジェクトにイベントを送り、アプリのキーウィンドウオブジェクトは、そのイベントを処理用の初期オブジェクトに渡す。初期オブジェクトはイベントのタイプに依存する。
・タッチイベント。タッチイベントの場合、ウィンドウオブジェクトは、最初に、タッチが発生したビューにイベントを配信するように試みる。そのビューはヒットテストビューとして知られる。ヒットテストビューを探すプロセスはヒットテスティングと呼ばれ、それは、ヒットテスティングはタッチが発生したビューを返す（ページ３２）に記載される。
・モーションイベント及びリモートコントロールイベント。これらのイベントの場合、ウィンドウオブジェクトは、処理用のファーストレスポンダにシェイキングモーションイベント又はリモートコントロールイベントを送る。ファーストレスポンダは、レスポンダチェーンはレスポンダオブジェクトから構成される（ページ３４）に記載される。
これらのイベント経路の最終ゴールは、イベントを処理し、イベントに応答することができるオブジェクトを見つけることである。したがって、ＵＩＫｉｔは、最初に、イベントを処理することに最も良く適したオブジェクトにイベントを送る。タッチイベントの場合、そのオブジェクトはヒットテストビューであり、他のイベントの場合、そのオブジェクトはファーストレスポンダである。以下のセクションは、ヒットテストビュー及びファーストレスポンダのオブジェクトがどのように決定されるかをより詳細に説明する。
【０６０７】
ヒットテスティングはタッチが発生したビューを返す
ｉＯＳはヒットテスティングを使用して、タッチ中のビューを見つける。ヒットテスティングは、タッチが任意の関係するビューオブジェクトの境界内にあるかどうかをチェックすることを要する。そうである場合、ｉＯＳはそのビューのサブビューのすべてを再帰的にチェックする。タッチポイントを含んでいるビュー階層内で最も低いビューがヒットテストビューになる。ｉＯＳがヒットテストビューを特定した後、ｉＯＳは処理用にそのビューにタッチイベントを渡す。
例示するために、ユーザが図２−１のビューＥにタッチしたと仮定する。ｉＯＳは、この順序でサブビューをチェックすることによってヒットテストビューを見つける。
１．タッチはビューＡの境界内にあるので、ｉＯＳはサブビューＢ及びＣをチェックする。
２．タッチはビューＢの境界内にないが、ビューＣの境界内にあるので、ｉＯＳはサブビューＤ及びＥをチェックする。
３．タッチはビューＤの境界内にないが、ビューＥの境界内にある。
ビューＥは、タッチを含んでいるビュー階層内で最も低いビューなので、ヒットテストビューになる。
【表９】
0006559881.tif 000010
ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：メソッドは、所与のＣＧＰｏｉｎｔ及びＵＩＥｖｅｎｔ用のヒットテストビューを返す。ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：メソッドは、それ自体でｐｏｉｎｔｌｎｓｉｄｅ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールすることによって始まる。ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：に渡されたポイントがビューの境界内部にある場合、ｐｏｉｎｔｌｎｓｉｄｅ：ｗｉｔｈＥｖｅｎｔ：はＹＥＳを返す。次いで、メソッドは、ＹＥＳを返すすべてのサブビュー上でｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：を再帰的にコールする。
ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：に渡されたポイントがビューの境界内部にない場合、ｐｏｉｎｔｌｎｓｉｄｅ：ｗｉｔｈＥｖｅｎｔ：メソッドに対する最初のコールはＮＯを返し、ポイントは無視され、ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：はｎｉｌを返す。タッチがそのサブビュー内で発生しなかった場合、タッチはそのサブビューのサブビューのうちのいずれでも発生しなかったので、サブビューがＮＯを返した場合、ビュー階層のその分岐全体は無視される。タッチポイントはスーパービュー及びサブビューの境界内になければならないので、これは、そのスーパービューの外部にあるサブビュー内のいかなるポイントも、タッチイベントを受け取ることができないことを意味する。これは、サブビューのｃｌｉｐｓＴｏＢｏｕｎｄｓプロパティがＮＯに設定された場合に発生することができる。
注：タッチが後でビュー外部に移動する場合でも、タッチオブジェクトはその有効期間の間そのヒットテストビューに関連付けられる。
ヒットテストビューは、タッチイベントを処理する最初の機会が与えられる。ヒットテストビューがイベントを処理することができない場合、システムがイベントを処理することができるオブジェクトを見つけるまで、レスポンダチェーンはレスポンダオブジェクトから構成される（ページ３４）に記載されるように、イベントはそのビューのレスポンダのチェーンを移動する。
【０６０８】
レスポンダチェーンはレスポンダオブジェクトから構成される
多くのタイプのイベントは、イベント配信用のレスポンダチェーンに依拠する。レスポンダチェーンは一連のリンクされたレスポンダオブジェクトである。レスポンダチェーンはファーストレスポンダで始まり、アプリケーションオブジェクトで終わる。ファーストレスポンダがイベントを処理することができない場合、ファーストレスポンダは、レスポンダチェーン内の次のレスポンダにイベントを転送する。
レスポンダオブジェクトは、イベントに応答し、イベントを処理することができるオブジェクトである。ＵＩＲｅｓｐｏｎｄｅｒクラスはすべてのレスポンダオブジェクト用のベースクラスであり、イベントハンドリング用のプログラミングインターフェースだけでなく、共通レスポンダ挙動用のプログラミングインターフェースも定義する。ＵＩＡｐｐｌｉｃａｔｉｏｎクラス、ＵＩＶｉｅｗＣｏｎｔｒｏｌｌｅｒクラス、及びＵＩＶｉｅｗクラスのインスタンスはレスポンダであり、それは、すべてのビュー及びほとんどのキーコントローラオブジェクトがレスポンダであることを意味する。コアアニメーションレイヤはレスポンダでないことに注意されたい。
ファーストレスポンダは最初にイベントを受け取るように指定される。通常、ファーストレスポンダはビューオブジェクトである。オブジェクトは、２つのことを行うことによってファーストレスポンダになる。
１．ＹＥＳを返すようにｃａｎＢｅｃｏｍｅＦｉｒｓｔＲｅｓｐｏｎｄｅｒメソッドをオーバーライドする。
２．ｂｅｃｏｍｅＦｉｒｓｔＲｅｓｐｏｎｄｅｒメッセージを受け取る。必要な場合、オブジェクトはこのメッセージを自分自身に送ることができる。
注：アプリがファーストレスポンダにオブジェクトを割り当てる前にそのオブジェクトグラフを確立したことを確認する。たとえば、通常、ｖｉｅｗＤｉｄＡｐｐｅａｒ：メソッドのオーバーライド内のｂｅｃｏｍｅＦｉｒｓｔＲｅｓｐｏｎｄｅｒメソッドをコールする。ｖｉｅｗＷｉｌｌＡｐｐｅａｒ：内でファーストレスポンダを割り当てるように試みる場合、オブジェクトグラフはまだ確立されておらず、そのため、ｂｅｃｏｍｅＦｉｒｓｔＲｅｓｐｏｎｄｅｒメソッドはＮＯを返す。
イベントは、レスポンダチェーンに依拠するオブジェクトのみではない。レスポンダチェーンは以下のすべてにおいて使用される。
・タッチイベント。ヒットテストビューがタッチイベントを処理することができない場合、イベントはヒットテストビューで始まるレスポンダのチェーンに渡される。
・モーションイベント。ＵＩＫｉｔを用いてシェイクモーションイベントを処理するために、ファーストレスポンダは、ＵＩＥｖｅｎｔを用いてシェイクモーションイベントを検出する（ページ５８）に記載されるように、ＵＩＲｅｓｐｏｎｄｅｒクラスのｍｏｔｉｏｎＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッド又はｍｏｔｉｏｎＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドのいずれかを実装しなければならない。
・リモートコントロールイベント。リモートコントロールイベントを処理するために、ファーストレスポンダは、ＵＩＲｅｓｐｏｎｄｅｒクラスのｒｅｍｏｔｅＣｏｎｔｒｏｌＲｅｃｅｉｖｅｄＷｉｔｈＥｖｅｎｔ：メソッドを実装しなければならない。
・アクションメッセージ。ユーザがボタン又はスイッチなどのコントロールを操作し、アクションメソッド用のターゲットがｎｉｌであるとき、メッセージはコントロールビューで始まるレスポンダのチェーンを通して送られる。
・編集メニューメッセージ。ユーザが編集メニューのコマンドをタップすると、ｉＯＳはレスポンダチェーンを使用して、（ｃｕｔ：、ｃｏｐｙ：、及びｐａｓｔｅ：などの）必要なメソッドを実装するオブジェクトを見つける。詳細については、編集メニュー及びサンプルコードプロジェクト、ＣｏｐｙＰａｓｔｅＴｉＩｅを表示及び管理するを参照されたい。
・テキスト編集。ユーザがテキストフィールド又はテキストビューをタップすると、そのビューは自動的にファーストレスポンダになる。デフォルトでは、仮想キーボードが現れ、テキストフィールド又はテキストビューは編集の焦点になる。カスタム入力ビューがアプリに適切な場合、キーボードの代わりにカスタム入力ビューを表示することができる。任意のレスポンダオブジェクトにカスタム入力ビューを追加することもできる。詳細については、データ入力用カスタムビューを参照されたい。
ＵＩＫｉｔは、ユーザがタップしたテキストフィールド又はテキストビューを、ファーストレスポンダになるように自動的に設定する。アプリは、ｂｅｃｏｍｅＦｉｒｓｔＲｅｓｐｏｎｄｅｒメソッドを用いてすべての他のファーストレスポンダオブジェクトを明示的に設定しなければならない。
【０６０９】
レスポンダチェーンは特定の配信経路に従う
初期オブジェクト−ヒットテストビュー又はファーストレスポンダのいずれか−がイベントを処理しない場合、ＵＩＫｉｔはチェーン内の次のレスポンダにイベントを渡す。各レスポンダは、イベントを処理したいか、又は、ｎｅｘｔＲｅｓｐｏｎｄｅｒメソッドをコールすることによりそれ自体の次のレスポンダに沿ってイベントを渡したいかを判断する。このプロセスは、レスポンダオブジェクトがイベントを処理するか、又はこれ以上レスポンダがなくなるまで続く。
レスポンダチェーンシーケンスは、ｉＯＳがイベントを検出し、通常、ビューである初期オブジェクトにイベントを渡すときに始まる。初期ビューはイベントを処理する最初の機会を有する。図２−２は、２つのアプリ構成のための２つの異なるイベント配信経路を示す。アプリのイベント配信経路はその固有の構造に依存するが、すべてのイベント配信経路は同じ経験則に密着する。
【表１０】
0006559881.tif 000011
左側のアプリの場合、イベントはこの経路に従う。
１．初期ビューがイベント又はメッセージを処理するように試みる。初期ビューがイベントを処理することができない場合、初期ビューはそのビューコントローラのビュー階層内の最上位ビューではないので、初期ビューはそのスーパービューにイベントを渡す。
２．スーパービューがイベントを処理するように試みる。スーパービューがイベントを処理することができない場合、スーパービューはまだビュー階層内の最上位ビューではないので、スーパービューはそのスーパービューにイベントを渡す。
３．ビューコントローラのビュー階層内の最上位ビューがイベントを処理するように試みる。最上位ビューがイベントを処理することができない場合、最上位ビューはそのビューコントローラにイベントを渡す。
４．ビューコントローラがイベントを処理するように試み、できない場合、ウィンドウにイベントを渡す。
５．ウィンドウオブジェクトがイベントを処理することができない場合、ウィンドウオブジェクトはシングルトンアプリオブジェクトにイベントを渡す。
６．アプリオブジェクトがイベントを処理することができない場合、アプリオブジェクトはイベントを廃棄する。
右側のアプリは少し異なる経路に従うが、すべてのイベント配信経路はこれらの経験則に従う。
１．ビューがそのビューコントローラのビュー階層に、それが最上位ビューに達するまでイベントを渡す。
２．最上位ビューがそのビューコントローラにイベントを渡す。
３．ビューコントローラがその最上位ビューのスーパービューにイベントを渡す。イベントがルートビューコントローラに達するまで、ステップ１〜３を繰り返す。
４．ルートビューコントローラがウィンドウオブジェクトにイベントを渡す。
５．ウィンドウがアプリオブジェクトにイベントを渡す。
重要：カスタムビューを実装して、リモートコントロールイベント、アクションメッセージ、ＵＩＫｉｔを伴うシェイクモーションイベント、又は編集メニューメッセージを処理する場合、直接ｎｅｘｔＲｅｓｐｏｎｄｅｒにイベント又はメッセージを転送して、それをレスポンダチェーンに送ってはいけない。代わりに、現在イベントハンドリングメソッドのスーパークラス実装を起動し、ためにレスポンダチェーンの横断をＵＩＫｉｔに処理させる。
【０６１０】
マルチタッチイベント
Ｏｂｊｅｃｔｉｖｅ−ＣＳｗｉｆｔ
一般に、ＵＩＫｉｔ内の標準のコントロール及びジェスチャレコグナイザを用いて、タッチイベントのほとんどすべてを処理することができる。ジェスチャレコグナイザにより、タッチが生み出すアクションからタッチの認識を分離することが可能になる。場合によっては、タッチの効果からタッチ認識を分離するメリットがない場合、アプリの中であること−タッチ中のドローイングなど−を行うことを望む。ビューのコンテンツがタッチ自体に密接に関係している場合、直接タッチイベントを処理することができる。ユーザがビューにタッチしたときにタッチイベントを受け取り、それらのプロパティに基づいてそれらのイベントを解釈し、次いで適切に応答する。
【０６１１】
ＵＩＲｅｓｐｏｎｄｅｒのサブクラスを作成する
アプリがカスタムタッチイベントハンドリングを実装するために、最初にレスポンダクラスのサブクラスを作成する。このサブクラスは以下のうちの任意の１つの可能性がある。
【表１１】
0006559881.tif 000012
次いで、マルチタッチイベントを受け取るサブクラスのインスタンスの場合。
１．サブクラスは、サブクラス内にタッチイベントハンドリングメソッドを実装する（ページ３９）に記載されるように、タッチイベントハンドリング用のＵＩＲｅｓｐｏｎｄｅｒメソッドを実装しなければならない。
２．タッチを受け取るビューは、そのｕｓｅｒｌｎｔｅｒａｃｔｉｏｎＥｎａｂｌｅプロパティをＹＥＳに設定していなければならない。ビューコントローラを下位分類している場合、ビューコントローラが管理するビューは、ユーザインターフェースをサポートしなければならない。
３．タッチを受け取るビューは目に見えなければならず、透明であったり、隠されていてはいけない。
【０６１２】
サブクラス内にタッチイベントハンドリングメソッドを実装する
ｉＯＳは、マルチタッチシーケンスの一部としてタッチを認識する。マルチタッチシーケンスの間、アプリはターゲットレスポンダに一連のイベントメッセージを送る。これらのメッセージを受け取り処理するために、レスポンダオブジェクトのクラスは、以下のＵＩＲｅｓｐｏｎｄｅｒメソッドを実装しなければならない。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent: (UIEvent *)event;
注：これらのメソッドは、カスタムジェスチャレコグナイザを作成する（ページ２８）に記載されたように、カスタムジェスチャレコグナイザを作成するためにオーバーライドしたメソッドと同じシグネチャを有する。
これらのタッチメソッドの各々は、タッチフェーズ：開始、移動、終了、及び取消に対応する。所与のフェーズの間の新しい又は変化したタッチが存在するとき、アプリオブジェクトはこれらのメソッドのうちの１つをコールする。各メソッドは、２つのパラメータ：１組のタッチ及びイベントを取る。
１組のタッチは、そのフェーズの間の新しい又は変化したタッチを表す、ＵＩＴｏｕｃｈオブジェクトのセット（ＮＳＳｅｔ）である。たとえば、タッチが開始フェーズから移動フェーズに遷移するとき、アプリはｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドをコールする。ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドに渡された１組のタッチは、今や、このタッチ及び移動フェーズ内のすべての他のタッチを含む。他のパラメータは、イベント用のすべてのタッチオブジェクトを含むイベント（ＵＩＥｖｅｎｔオブジェクト）である。イベント内のタッチオブジェクトのうちのいくつかは前のイベントメッセージから変化していない場合があるので、これは１組のタッチとは異なる。
タッチを処理するすべてのビューは、完全なタッチイベントストリームを受け取ることを予想し、そのため、サブクラスを作成するとき、以下の規則に留意されたい。
・カスタムレスポンダがＵＩＶｉｅｗ又はＵＩＶｉｅｗＣｏｎｔｒｏｌｌｅｒのサブクラスである場合、イベントハンドリングメソッドのすべてを実装するべきである。
・任意の他のレスポンダクラスを下位分類する場合、イベントメソッドのうちのいくつかについてヌル実装を有することができる。
・すべてのメソッドにおいて、メソッドのスーパークラス実装をコールするようにする。
イベントのある特定のフェーズの間にレスポンダオブジェクトがタッチを受け取ることを防止する場合、生じる挙動は未定義であり、恐らく望ましくない場合がある。
レスポンダがイベントを処理しながら持続的オブジェクトを作成する場合、レスポンダは、システムがそのシーケンスを取り消す場合、ｔｏｕｃｈｅｓＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドを実装して、それらのオブジェクトを処分するべきである。取消は、外部イベント−たとえば、着信電話呼出し−が現在のアプリのイベント処理を妨害するときに発生する。レスポンダオブジェクトは、マルチタッチシーケンス用の最後のｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メッセージを受け取ったとき、任意の持続的オブジェクトも処分するべきであることに注意されたい。マルチタッチシーケンス内の最後のＵＩＴｏｕｃｈＰｈａｓｅＥｎｄｅｄタッチオブジェクトをどのように決定するかを見出すために、タッチイベントを転送する（ページ５２）を参照されたい。
【０６１３】
タッチイベントのフェーズ及び位置を追跡する
ｉＯＳはマルチタッチシーケンス内のタッチを追跡する。ｉＯＳは、タッチのフェーズ、ビュー内のタッチの位置、タッチの前の位置、及びタッチのタイムスタンプを含む、タッチの各々についての属性を記録するこれらのプロパティを使用して、タッチにどのように応答するかを決定する。
タッチオブジェクトはｐｈａｓｅプロパティ内にフェーズ情報を記憶し、各フェーズはタッチイベントメソッドのうちの１つに対応する。タッチオブジェクトは、３つの方法：タッチが発生したウィンドウ、そのウィンドウ内のビュー、及びそのビュー内のタッチの正確な位置で位置を記憶する。図３−１（ページ４０）は進行中の２つのタッチを有する例示的なイベントを示す。
【表１２】
0006559881.tif 000013
指が画面にタッチすると、そのタッチは、イベントが処理用に別のビューに後で渡される場合でも、イベントの有効期間、下にあるウィンドウとビューの両方に関連付けられる。タッチの位置情報を使用して、タッチにどのように応答するかを決定する。たとえば、立て続けに２つのタッチが発生した場合、それらの両方が同じビュー内で発生した場合のみ、それらはダブルタップとして扱われる。タッチオブジェクトは、１つ存在する場合、その現在位置とその前の位置の両方を記憶する。
【０６１４】
タッチオブジェクトを取り出し照会する
イベントハンドリングメソッドにおいて、以下からタッチオブジェクトを取り出すことにより、イベントについての情報を取得する。
・セットオブジェクト。渡されたＮＳＳｅｔは、ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッドのためのＵＩＴｏｕｃｈＰｈａｓｅＢｅｇａｎなどの、メソッドによって表されるフェーズ内の新しい又は変化したすべてのタッチを含んでいる。
・イベントオブジェクト。渡されたＵＩＥｖｅｎｔオブジェクトは、所与のマルチタッチシーケンス用のタッチのすべてを含んでいる。
ｍｕｌｔｉｐｌｅＴｏｕｃｈＥｎａｂｌｅｄプロパティはデフォルトでＮＯに設定され、それは、ビューがマルチタッチシーケンス内の最初のタッチのみを受け取ることを意味する。このプロパティが無効にされると、セット内に１つのオブジェクトのみが存在するので、セットオブジェクト上のａｎｙＯｂｊｅｃｔメソッドをコールすることにより、タッチオブジェクトを取り出すことができる。
タッチの位置を知りたい場合、ＩｏｃａｔｉｏｎＩｎＶｉｅｗ：メソッドを使用する。このメソッドにパラメータ自体を渡すことにより、受け取るビューの座標系内のタッチの位置を取得する。同様に、ｐｒｅｖｉｏｕｓＬｏｃａｔｉｏｎｌｎＶｉｅｗ：メソッドは、タッチの前の位置を伝える。タッチがいくつのタップを有するか（ｔａｐＣｏｕｎｔ）、タッチがいつ作成されたか、又は最後に変化したか（ｔｉｍｅｓｔａｍｐ）、及びタッチがどのフェーズにいるか（ｐｈａｓｅ）を判定することもできる。
、最後のフェーズから変化してないタッチ、又は渡されたセット内のタッチとは異なるフェーズ内にあるタッチに関心がある場合、イベントオブジェクト内でそれらを見つけることができる。図３−２はタッチオブジェクトを含んでいるイベントオブジェクトを描写する。これらのタッチオブジェクトのすべてを取得するために、イベントオブジェクト上のａｌｌＴｏｕｃｈｅｓメソッドをコールする。
【表１３】
0006559881.tif 000014
特定のウィンドウに関連付けられたタッチのみに関心がある場合、ＵＩＥｖｅｎｔオブジェクトのｔｏｕｃｈｅｓＦｏｒＷｉｎｄｏｗ：メソッドをコールする。図３−３はウィンドウＡに対するすべてのタッチを示す。
【表１４】
0006559881.tif 000015
特定のビューに関連付けられたタッチを取得したい場合、イベントオブジェクトのｔｏｕｃｈｅｓＦｏｒＶｉｅｗ：メソッドをコールする。図３−４はビューＡに対するすべてのタッチを示す。
【表１５】
0006559881.tif 000016
【０６１５】
タップジェスチャを処理する
アプリの中でタップジェスチャを認識することができることに加えて、恐らく、シングルタップ、ダブルタップ、又はトリプルタップさえも区別することを望むであろう。タッチのｔａｐＣｏｕｎｔプロパティを使用して、ユーザがビューをタップした回数を特定する。
この値を見つける最も良い場所は、ユーザがタップから指を上げるときに対応するので、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドである。タッチアップフェーズ−シーケンスが終了したとき−内のタップカウントを探すことにより、指が実際にタップしていて、たとえば、タッチダウン及びドラッグしていないことを保証する。リスト３−１は、ビューのうちの１つにおいてダブルタップが発生したかどうかをどのように判定するかの一例を示す。
リスト３−１  ダブルタップジェスチャを検出する
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *aTouch in touches) {
if (aTouch.tapCount ＞= 2){
／／ビューがタップに応答する
[self respondToDoubleTapGesture:aTouch];
}
}
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
}
【０６１６】
スワイプジェスチャ及びドラッグジェスチャを処理する
水平スワイプ及び垂直スワイプは、追跡することができる簡単なタイプのジェスチャである。スワイプジェスチャを検出するために、モーションの所望の軸に沿ってユーザの指の動きを追跡する。次いで、ジェスチャごとに以下の質問を調べることにより、動きがスワイプであるかどうかを判断する。
・ユーザの指が十分遠くまで動いたか？
・ユーザの指が比較的一直線に動いたか？
・ユーザの指がそれをスワイプと呼べるほど十分速く動いたか？
これらの質問に答えるために、タッチの初期位置を記憶し、タッチが動くにつれてその位置を比較する。
リスト３−２は、ビュー内の水平スワイプを検出するために使用する可能性があるいくつかの基本追跡メソッドを示す。この例では、ビューは、タッチの初期位置を記憶するためにビューが使用するｓｔａｒｔＴｏｕｃｈＰｏｓｉｔｉｏｎプロパティを有する。ｔｏｕｃｈｅｓＥｎｄｅｄ：メソッドでは、タッチがスワイプであるかどうかを判定するために、終了タッチ場所を開始位置と比較する。タッチが垂直方向に極端に動いたか、又は十分遠くまで動かなかった場合、タッチはスワイプであるとは考えられない。この例は、ｍｙＰｒｏｃｅｓｓＲｉｇｈｔＳｗｉｐｅ：メソッド又はｍｙＰｒｏｃｅｓｓＬｅｆｔＳｗｉｐｅ：メソッド用の実装を示さないが、カスタムビューはそこでスワイプジェスチャを処理するはずである。
リスト３−２  ビュー内のスワイプジェスチャを追跡する
#define HORIZ_SWIPE_DRAG_MIN 12
#define VERT_SWIPE_DRAG_MAX  4
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
／／startTouchPositionはプロパティである
self.startTouchPosition = [aTouch locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
CGPoint currentTouchPosition = [aTouch locationInView:self];
／／タッチの方向が水平であり、十分長いかどうかをチェックする
if (fabsf(self.startTouchPosition.x - currentTouchPosition.x) ＞= HORIZ_SWIPE_DRAG_MIN &&
fabsf(self.startTouchPosition.y - currentTouchPosition.y) ＜= VERT_SWIPE_DRAG_MAX)
{
／／タッチがスワイプであるように見える場合
if (self.startTouchPosition.x ＜ currentTouchPosition.x) {
[self myProcessRightSwipe:touches withEvent:event];
} else {
[self myProcessLeftSwipe:touches withEvent:event];
}
self.startTouchPosition = CGPointZero;
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
self.startTouchPosition = CGPointZero;
}
このコードはジェスチャの最中にタッチの位置をチェックせず、それは、ジェスチャが画面上のすべてに行く可能性があるが、その開始点及び終了点が一直線である場合まだスワイプと考えられることを意味することに注意されたい。より精巧なスワイプジェスチャレコグナイザは、ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッド内の中間位置もチェックするべきである。垂直方向のスワイプジェスチャを検出するために、同様のコードを使用するはずであるが、ｘ成分とｙ成分を交換するはずである。
リスト３−３は、シングルタッチを追跡する更に簡単な実装を示し、このとき、ユーザは画面のまわりでビューをドラッグしている。ここで、カスタムビュークラスは、ｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドのみを完全に実装する。このメソッドは、ビュー内のタッチの現在位置と前の位置との間のデルタ値を計算する。次いで、メソッドは、このデルタ値を使用してビューのフレームの起点をリセットする。
リスト３−３  シングルタッチを使用してビューをドラッグする
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
CGPoint loc = [aTouch locationInView:self];
CGPoint prevloc = [aTouch previousLocationInView:self];
CGRect myFrame = self.frame;
float deltaX = loc.x - prevloc.x;
float deltaY = loc.y - prevloc.y;
myFrame.origin.x += deltaX;
myFrame.origin.y += deltaY;
[self setFrame:myFrame];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
}
【０６１７】
複合マルチタッチシーケンスを処理する
タップ、ドラッグ、及びスワイプは、通常、ただ１つのタッチを要し、追跡することが簡単である。２つ以上のタッチから構成されるタッチイベントを処理することはより困難である。変化したタッチ属性を記録し、内部状態を適切に変更して、すべてのフェーズを通してすべてのタッチを追跡しなければならない場合がある。複数のタッチを追跡し処理するために、
・ビューのｍｕｌｔｉｐｌｅＴｏｕｃｈＥｎａｂｌｅｄプロパティをＹＥＳに設定し、
・コアファウンデーションディクショナリオブジェクト（ＣＦＤｉｃｔｉｏｎａｒｙＲｅｆ）を使用して、イベントの間のそれらのフェーズを通してタッチの変化を追跡する
必要がある。
複数のタッチを有するイベントを処理するとき、しばしば、後でタッチを比較することができるように、タッチの状態についての情報を記憶する。一例として、各タッチの最終位置をその元の位置と比較することを望むとしよう。ｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッドにおいて、ｌｏｃａｔｉｏｎＩｎＶｉｅｗ：メソッドから各タッチの元の位置を取得し、キーとしてＵＩＴｏｕｃｈオブジェクトのアドレスを使用して、ＣＦＤｉｃｔｉｏｎａｒｙＲｅｆオブジェクト内にそれらを記憶する。次いで、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドにおいて、各々の渡されたタッチオブジェクトのアドレスを使用して、オブジェクトの元の位置を取得し、それをその現在位置と比較することができる。
重要：ＮＳＤｉｃｔｉｏｎａｒｙはそのキーをコピーするので、ＮＳＤｉｃｔｉｏｎａｒｙオブジェクトよりもむしろＣＦＤｉｃｔｉｏｎａｒｙＲｅｆデータタイプを使用して、タッチを追跡する。ＵＩＴｏｕｃｈクラスは、オブジェクトコピーイングに必要なＮＳＣｏｐｙｉｎｇプロトコルを採用しない。
リスト３−４は、コアファウンデーションディクショナリ内にＵＩＴｏｕｃｈオブジェクトの開始位置をどのように記憶するかを示す。ｃａｃｈｅＢｅｇｉｎＰｏｉｎｔＦｏｒＴｏｕｃｈｅｓ：メソッドは、スーパービューの座標で各タッチの位置を記憶し、その結果、メソッドはタッチのすべての位置を比較する共通座標系を有する。
リスト３−４  マルチタッチの開始位置を記憶する
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self cacheBeginPointFodouches:touches];
}
- (void)cacheBeginPointForTouches:(NSSet *)touches {
if ([touches count] ＞ 0){
for (UITouch *touch in touches) {
CGPoint *point = (CGPoint *) CFDictionaryGetValue(touchBeginPoints, touch);
if (point == NULL) {
point = (CGPoint *)malloc(sizeof(CGPoint));
CFDictionarySetValue(touchBeginPoints, touch, point);
}
*point = [touch locationInView:view.superview];
}
}
}
リスト３−５は前の例を土台にする。リスト３−５は、ディクショナリから初期位置をどのように取り出すかを示す。次いで、リスト３−５は同じタッチの現在位置を取得し、その結果、これらの値を使用して、アフィン変換（図示せず）を計算することができる。
リスト３−５  タッチオブジェクトの初期位置を取り出す
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
CGAffineTransform newTransform = [self incrementalTransformWithTouches:touches];
}
-(CGAffineTransform)incrementalTransformWithTouches:(NSSet *)touches {
NSArray *sortedTouches = [[touches allObjects] sortedArrayUsingSelector:@selector(compareAddress:)];
／／ここに他のコード
CGAffineTransform transform = CGAffineTransformIdentity;
UITouch *touch1 = [sortedTouches objectAtIndex:0];
UITouch *touch2 = [sortedTouches objectAtIndex:1];
CGPoint beginPoint1 = *(CGPoint *)CFDictionaryGetVaIue(touchBeginPoints, touch1);
CGPoint currentPoint1 = [touch1 locationInView:view.superview];
CGPoint beginPoint2 = *(CGPoint *)CFDictionaryGetValue(touchBeginPoints, touch2);
CGPoint currentPoint2 = [touch2 locationInView:view.superview];
／／アフィン変換を計算し、変換を返す
}
次の例、リスト３−６は、タッチ変化を追跡するためにディクショナリを使用しないが、イベントの間に複数のタッチを処理する。リスト３−６は、指が「ようこそ」プラカードを画面のまわりに動かすにつれてその動きをアニメ化することにより、タッチに応答するカスタムＵＩＶｉｅｗオブジェクトを示す。リスト３−６はまた、ユーザがダブルタップするとプラカードの言語を変更する。この例は、ＭｏｖｅＭｅサンプルコードプロジェクトから来ており、それを調査してイベントハンドリングコンテキストのより良い理解を得ることができる。
リスト３−６  複合マルチタッチシーケンスを処理する
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
／／アプリはシングルタッチのみをサポートし、そのため、anyObjectは、
／／タッチからそのタッチのみを取り出す
UITouch *touch = [touches anyObject];
／／タッチがプラカードビュー内にあった場合のみプラカードビューを動かす
if([touch view] !=placardView) {
／／ダブルタップがプラカードビューの外にある場合、
／／プラカードの表示文字列を更新する
if ([touch tapCount] == 2){
[placardView setupNextDisplayString];
}
return;
}
／／最初のタッチをアニメ化する
CGPoint touchPoint = [touch locationInView:self];
[self animateFirstTouchAtPoint:touchPoint];
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
／／タッチがplacardView内にあった場合、placardViewをその位置に動かす
if ([touch view] == placardView) {
CGPoint location = [touch locationInView:self];
placardView.center = location;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
／／タッチがplacardView内にあった場合、それを中央に跳ね返す
if ([touch view] == placardView) {
／／ユーザ対話を無効にし、そのため、後続のタッチが
／／アニメーションに干渉しない
self.userlnteractionEnabled ＝ NO;
[self animatePlacardViewToCenter];
}
}
-(void)touchesCancelled:(NSSet *)touches withEvent: (UIEvent *)event {
／／デバイスに負わせる影響を可能なかぎり小さくするために、単に
／／プラカードビューの中央及び変換を元の値に設定する
placardView.center = self.center;
placardView.transform = CGAffineTransformIdentity;
}
マルチタッチシーケンス内の最後の指がビューからいつ上がったかを明らかにするために、タッチオブジェクトが渡されたセット内にいくつあるか、及び渡されたＵＩＥｖｅｎｔオブジェクト内にいくつあるかを参照する。数が同じ場合、マルチタッチシーケンスは終わっている。リスト３−７はこれをコードでどのように行うかを示す。
リスト３−７  マルチタッチシーケンス内の最後のタッチがいつ終了したかを判定する
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
if ([touches count] == [[event touchesForView:self] count]) {
／／最後の指が上がった
}
}
渡されたセットが所与のフェーズの間の新しい又は変化したビューに関連付けられたすべてのタッチオブジェクトを含んでおり、ｔｏｕｃｈｅｓＦｏｒＶｉｅｗ：メソッドから返されたタッチオブジェクトが指定されたビューに関連付けられたすべてのオブジェクトを含むことを覚えておくこと。
【０６１８】
カスタムタッチイベントの挙動を指定する
アプリ内の特定のジェスチャ、特定のビュー、又はタッチイベントのすべての挙動を変更することにより、アプリがタッチを処理する方法をカスタマイズする。以下の方法でタッチイベントのストリームを変更することができる。
・複数のタッチの配信をオンにする。デフォルトでは、ビューはマルチタッチシーケンスの間、最初のタッチ以外のすべてを無視する。ビューが複数のタッチを処理することを望む場合、インターフェースビルダ内の関係する属性を設定することにより、又はビューのｍｕｌｔｉｐｌｅＴｏｕｃｈＥｎａｂｌｅｄプロパティをブログラムでＹＥＳに設定することにより、ビューに対してこの機能を有効にしなければならない。
・イベント配信をシングルビューに限定する。デフォルトでは、ビューのｅｘｃｌｕｓｉｖｅＴｏｕｃｈプロパティがＮＯに設定され、それは、あるビューが、ウィンドウ内の他のビューがタッチを受け取ることをブロックしないことを意味する。特定のビューに対してそのプロパティをＹＥＳに設定した場合、そのビューは、タッチを追跡する唯一のビューである場合−その場合のみ−タッチを受け取る。
ビューが非排他的である場合、ユーザは、１つのビュー内で１つの指を、別のビュー内で別の指をタッチすることができ、各ビューは同時にそのタッチを追跡することができる。次に、図３−５のようにセットアップされたビューを有すること、及びビューＡが排他的タッチビューであることを想像してみよう。ユーザがＡの内部をタッチした場合、Ａはタッチを認識する。しかし、ユーザがビューＢ内部で１つの指を保持し、ビューＡ内部もタッチした場合、ビューＡは、タッチを追跡する唯一のビューではなかったので、タッチを受け取らない。同様に、ユーザがビューＡ内部で１つの指を保持し、ビューＢ内部もタッチした場合、ビューＡがタッチを追跡する唯一のビューなので、ビューＢはタッチを受け取らない。どんなときも、ユーザはＢとＣの両方に更にタッチすることができ、それらのビューはそれらのタッチを同時に追跡することができる。
【表１６】
0006559881.tif 000017
・イベント配信をサブビューに限定する。カスタムＵＩＶｉｅｗクラスは、マルチタッチイベントが特定のサブビューに配信されないように、ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：をオーバーライドすることができる。この技法の説明については、ヒットテスティングをオーバーライドすることによってタッチを横取りする（ページ５２）を参照されたい。
完全に、又はある時間期間の間だけ、タッチイベント配信をオフにすることもできる。
・タッチイベントの配信をオフにする。ビューのｕｓｅｒｌｎｔｅｒａｃｔｉｏｎＥｎａｂｌｅｄプロパティをＮＯに設定して、タッチイベント配信をオフにする。ビューは、隠されているか、又は透明である場合も、タッチイベントを受け取らない。
・ある期間の間タッチイベントの配信をオフにする。時々、一時的に−たとえば、コードがアニメーションを実施しているとき−イベント配信をオフにすることを望む。アプリは、ｂｅｇｉｎＩｇｎｏｒｉｎｇＩｎｔｅｒａｃｔｉｏｎＥｖｅｎｔｓメソッドをコールしてタッチイベントの受取りを停止し、後で、ｅｎｄＩｇｎｏｒｉｎｇＩｎｔｅｒａｃｔｉｏｎＥｖｅｎｔｓメソッドをコールしてタッチイベント配信を再開することができる。
【０６１９】
ヒットテスティングをオーバーライドすることによってタッチを横取りする
サブビューをもつカスタムビューを有する場合、サブビューレベルでタッチを処理したいか、又はスーパービューレベルでタッチを処理したいかを決定する必要がある。−サブビューがｔｏｕｃｈｅｓＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッド、ｔｏｕｃｈｅｓＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッド、又はｔｏｕｃｈｅｓＭｏｖｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドを実装しないことを意味する−スーパービューレベルでタッチを処理することを選んだ場合、スーパービューは、そのサブビューのうちのいずれかではなくそれ自体を返すように、ｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：をオーバーライドするべきである。
ヒットテスティングをオーバーライドすると、自分自身をヒットテストビューとして設定することにより、スーパービューは、通常最初にサブビューに渡されるタッチを横取りし受け取るので、スーパービューがすべてのタッチを受け取ることが保証される。スーパービューがｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：をオーバーライドしない場合、タッチイベントは、タッチイベントが最初に発生したサブビューに関連付けられ、スーパービューには決して送られない。
ヒットテスティングはタッチが発生したビューを返す（ページ３２）に記載されたように、２つのヒットテストメソッド：ビューのｈｉｔＴｅｓｔ：ｗｉｔｈＥｖｅｎｔ：メソッド及びレイヤのｈｉｔＴｅｓｔ：メソッドが存在することを思い出してみよう。ユーザ定義でこれらのメソッドをコールする必要はめったにない。それらをオーバーライドしてサブビューからタッチイベントを横取り可能性が高い。しかしながら、時々、レスポンダはイベント転送より前にヒットテスティングを実施する（タッチイベントを転送する（ページ５２）参照）。
【０６２０】
タッチイベントを転送する
別のレスポンダオブジェクトにタッチイベントを転送するために、そのオブジェクトに適切なタッチイベントハンドリングメッセージを送る。ＵＩＫｉｔクラスは自分宛てではないタッチを受け取るように設計されていないので、この技法は注意して使用する。レスポンダオブジェクトがタッチを処理するために、タッチのｖｉｅｗプロパティは、レスポンダへの参照を保持しなければならない。アプリ内の他のレスポンダにタッチを条件付きで転送したい場合、レスポンダのすべては、ユーザ定義のＵＩＶｉｅｗサブクラスのインスタンスであるべきである。
たとえば、アプリが３つのカスタムビューＡ、Ｂ、及びＣを有するとしよう。ユーザがビューＡにタッチすると、アプリのウィンドウは、ビューＡがヒットテストビューであると判断し、ビューＡに初期タッチイベントを送る。いくつかの条件に応じて、ビューＡは、ビューＢ又はビューＣのいずれかにイベントを転送する。この場合、ビューＡ、Ｂ、及びＣは、この転送を知っていなければならず、ビューＢ及びＣは、自分宛てではないタッチに対処することができなければならない。
イベント転送は、しばしば、タッチオブジェクトを分析してそれらがどこに転送されるべきかを判断することを必要とする。この分析のために取ることができる２〜３の手法が存在する。
・共通スーパービューなどの「オーバレイ」ビューの場合、ヒットテスティングを使用して、それらをサブビューに転送するより前に分析用のイベントを横取りする（ヒットテスティングをオーバーライドすることによってタッチを横取りする（ページ５２）参照）。
・ＵＩＷｉｎｄｏｗのカスタムサブクラス内のｓｅｎｄＥｖｅｎｔ：をオーバーライドし、タッチを分析し、それらを適切なレスポンダに転送する。
ｓｅｎｄＥｖｅｎｔ：メソッドをオーバーライドすると、アプリが受け取るイベントを監視することが可能になる。ＵＩＡｐｐｌｉｃａｔｉｏｎオブジェクトと各ＵＩＷｉｎｄｏｗオブジェクトの両方はｓｅｎｄＥｖｅｎｔ：メソッド内でイベントを送出し、そのため、このメソッドは、アプリに入ってくるイベント用の集中点として働く。これは、非常に少ないアプリが行う必要がある何かであり、ｓｅｎｄＥｖｅｎｔ：をオーバーライドする場合、スーパークラスの実装−［ｓｕｐｅｒ  ｓｅｎｄＥｖｅｎｔ：ｔｈｅＥｖｅｎｔ］を必ず起動するようにする。イベントの分配を決して改ざんしてはいけない。
リスト３−８は、ＵＩＷｉｎｄｏｗのサブクラス内のこの技法を示す。この例では、イベントは、それが関連付けられたビュー上でアフィン変換を実施するカスタムヘルパレスポンダに転送される。
リスト３−８  ヘルパレスポンダオブジェクトにタッチイベントを転送する
- (void)sendEvent:(UIEvent *)event {
for (TransformGesture *gesture in transformGestures) {
／／イベントから関心があるすべてのタッチを収集する
NSSet *touches = [gesture observedTouchesForEvent:event];
NSMutableSet *began = nil;
NSMutableSet *moved = nil;
NSMutableSet *ended = nil;
NSMutableSet *canceled = nil;
／／通常のイベント送出と同様に処理するためにフェーズによってタッチをソートする
for (UITouch *touch in touches) {
switch ([touch phase]) {
case UITouchPhaseBegan:
if (!began)began = [NSMutableSet set];
[began addObject:touch];
break;
case UITouchPhaseMoved:
if (!moved)moved = [NSMutableSet set];
[moved addObject:touch];
break;
case UITouchPhaseEnded:
if (!ended)ended = [NSMutableSet set];
[ended addObject:touch];
break;
case UITouchPhaseCancelled:
if (!canceled) canceled = [NSMutableSet set];
[canceled addObject:touch];
break;
default:
break;
}
}
／／メソッドをコールしてタッチを処理する
if (began)      [gesture touchesBegan:began withEvent:event];
if (moved)      [gesture touchesMoved:moved withEvent:event];
if (ended)      [gesture touchesEnded:ended withEvent:event];
if (canceled)  [gesture touchesCancelled:canceled withEvent:event];
}
[super sendEvent:event];
}
サブクラスをオーバーライドすることは、ｓｅｎｄＥｖｅｎｔ：メソッドのスーパークラス実装を起動することに注意されたい。これは、タッチイベントストリームの完全性にとって重要である。
【０６２１】
マルチタッチイベントを処理するためのベストプラクティス
タッチイベントとモーションイベントの両方を処理するとき、従うべき少数の推奨される技法及びパターンが存在する。
・イベント取消メソッドを常に実装する。
実装において、現在のマルチタッチシーケンスの前にそうであった状態に、ビューの状態を戻する。そうしない場合、ビューは整合性のない状態で残される可能性があり、又は、いくつかの場合では、別のビューが取消メッセージを受け取る可能性がある。
・ＵＩＶｉｅｗ、ＵＩＶｉｅｗＣｏｎｔｒｏｌｌｅｒ、又はＵＩＲｅｓｐｏｎｄｅｒのサブクラス内のイベントを処理する場合、
・それらのメソッドの実装が何も行わない場合でも、イベントハンドリングメソッドのすべてを実装する。
・メソッドのスーパークラス実装をコールしてはいけない。
・任意の他のＵＩＫｉｔレスポンダクラスのサブクラス内のイベントを処理する場合、
・イベントハンドリングメソッドのすべてを実装するべきではない。
・実装するメソッドでは、必ずスーパークラス実装をコールする。たとえば、［ｓｕｐｅｒ  ｔｏｕｃｈｅｓＢｅｇａｎ：ｔｏｕｃｈｅｓ  ｗｉｔｈＥｖｅｎｔ：ｅｖｅｎｔ］。
・ＵＩＫｉｔフレームワークの他のレスポンダオブジェクトにイベントを転送してはいけない。
代わりに、ＵＩＶｉｅｗのユーザ定義のサブクラスのインスタンスにイベントを転送する。その上、イベント転送が行われていること、及びそれらが自分宛てではないタッチを受け取ることができることにこれらのレスポンダオブジェクトが気付くことを確認すること。
・ｎｅｘｔＲｅｓｐｏｎｄｅｒメソッドを通してレスポンダチェーンにイベントを明示的に送ってはならず、代わりに、スーパークラス実装を起動し、ＵＩＫｉｔにレスポンダチェーンの横断を処理させる。
・精度を失うので、タッチハンドリングにおいて整数丸めコードを使用してはいけない。
ｉＯＳは、３２０×４８０座標空間内でタッチを報告して、ソース互換性を維持する。しかしながら、高精細デバイスでは、解像度は実際各次元において２倍高く（６４０×９６０）、それは、タッチが高精細デバイス上のハーフポイント境界に着地できることを意味する。より古いデバイス上では、タッチはフルポイント境界上にのみ着地する。
【０６２２】
モーションイベント
【０６２３】
ＳｗｉｆｔＯｂｊｅｃｔｉｖｅ−Ｃ
ユーザは、デバイスを動かすか、振るか、又は傾けるときにモーションイベントを発生させる。これらのモーションイベントは、デバイスハードウェア、特に、加速度計及びジャイロスコープによって検出される。
加速度計は、実際は、３つの加速度計、各軸−ｘ、ｙ、及びｚ用に１つで構成されている。各加速度計は、線形経路に沿って時間とともに速度における変化を測定する。３つの加速度計すべてを組み合わせると、任意の方向のデバイスの動きを検出し、デバイスの現在方向を取得することが可能になる。３つの加速度計が存在するが、本文書の残りでは、それらを単一のエンティティとして参照する。ジャイロスコープは、３つの軸のまわりの回転速度を測定する。
モーションイベントは同じハードウェアが発生源となる。アプリのニーズに応じて、そのハードウェアデータにアクセスすることができるいくつかの異なる方法が存在する。
・デバイスの全体的な方向を検出する必要があるが、方向ベクトルを知る必要がない場合、ＵＩＤｅｖｉｃｅクラスを使用する。詳細については、ＵＩＤｅｖｉｃｅを用いて現在のデバイスの方向を取得する（ページ５６）を参照されたい。
・ユーザがデバイスを振ったときにアプリが応答することを望む場合、ＵＩＫｉｔモーションイベントハンドリングメソッドを使用して、渡されたＵＩＥｖｅｎｔオブジェクトから情報を取得することができる。詳細については、ＵＩＥｖｅｎｔを用いてシェイクモーションイベントを検出する（ページ５８）を参照されたい。
・ＵＩＤｅｖｉｃｅクラスもＵＩＥｖｅｎｔクラスも十分ではない場合、コアモーションフレームワークを使用して、加速度計、ジャイロスコープ、及びデバイスモーションのクラスにアクセスすることを望む可能性がある。詳細については、コアモーションを用いてデバイスの動きを取り込む（ページ６０）を参照されたい。
【０６２４】
ＵＩＤｅｖｉｃｅを用いて現在のデバイスの方向を取得する
、正確な方向ベクトルではなく、デバイスの全体的な方向のみを知る必要があるとき、ＵＩＤｅｖｉｃｅクラスのメソッドを使用する。ＵＩＤｅｖｉｃｅを使用することは簡単であり、自分自身で方向ベクトルを計算することを必要としない。
現在方向を取得することができる前に、ｂｅｇｉｎＧｅｎｅｒａｔｉｎｇＤｅｖｉｃｅＯｒｉｅｎｔａｔｉｏｎＮｏｔｉｆｉｃａｔｉｏｎｓメソッドをコールすることにより、デバイス方向通知の生成を始めるようにＵＩＤｅｖｉｃｅクラスに伝える必要がある。これにより、加速度計ハードウェアがオンになり、バッテリ電力の節約がオフになる場合がある。リスト４−１は、ｖｉｅｗＤｉｄＬｏａｄメソッド内でこれを実演する。
方向通知を有効にした後、ＵＩＤｅｖｉｃｅオブジェクトのｏｒｉｅｎｔａｔｉｏｎプロパティから現在方向を取得する。デバイス方向が変化したとき通知されることを望む場合、ＵＩＤｅｖｉｃｅＯｒｉｅｎｔａｔｉｏｎＤｉｄＣｈａｎｇｅＮｏｔｉｆｉｃａｔｉｏｎ通知を受け取るように登録する。デバイス方向は、デバイスが横長モードか、縦長モードか、画面が上向きか、画面が下向きかなどを示す、ＵＩＤｅｖｉｃｅＯｒｉｅｎｔａｔｉｏｎ定数を使用して報告される。これらの定数はデバイスの物理方向を示すが、必ずしも、アプリのユーザインターフェースの方向に対応するとはかぎらない。
もはやデバイスの方向を知る必要がないとき、ＵＩＤｅｖｉｃｅメソッド、ｅｎｄＧｅｎｅｒａｔｉｎｇＤｅｖｉｃｅＯｒｉｅｎｔａｔｉｏｎＮｏｔｉｆｉｃａｔｉｏｎｓをコールすることにより、方向通知を常に無効にする。これにより、加速度計ハードウェアが他のどこでも使用されていない場合、それを無効にする機会がシステムに与えられ、それにより、バッテリ電力が保存される。
リスト４−１  デバイス方向における変化に応答する
-(void) viewDidLoad {
／／加速度計をオンにし、加速度計イベントの受取りを開始するように要求する
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
}
- (void)orientationChanged:(NSNotification *)notification {
／／デバイス方向における変化に応答する
}
-(void) viewDidDisappear {
／／加速度計イベントの受取りを停止し、加速度計をオフにするように要求する
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
}
ＵＩＤｅｖｉｃｅ方向の変化に応答する別の例については、Ａｌｔｅｒｎａｔｅ  Ｖｉｅｗｓサンプルコードオブジェクトを参照されたい。
【０６２５】
ＵＩＥｖｅｎｔを用いてシェイクモーションイベントを検出する
ユーザがデバイスを振ると、ｉＯＳは加速度計データを評価する。デルタがある特定の基準を満たす場合、ｉＯＳはシェイキングジェスチャを解釈し、それを表すためにＵＩＥｖｅｎｔオブジェクトを作成する。次いで、ｉＯＳは、処理用に現在アクティブなアプリにそのイベントオブジェクトを送る。アプリは、シェイクモーションイベント及びデバイス方向の変化に同時に応答できることに注意されたい。
モーションイベントはタッチイベントよりも簡単である。システムは、モーションが開始及び終了したときをアプリに伝えるが、各個別のモーションが発生したときは伝えない。また、モーションイベントは、イベントタイプ（ＵＩＥｖｅｎｔＴｙｐｅＭｏｔｉｏｎ）、イベントサブタイプ（ＵＩＥｖｅｎｔＳｕｂｔｙｐｅＭｏｔｉｏｎＳｈａｋｅ）、及びタイムスタンプのみを含む。
【０６２６】
モーションイベント用のファーストレスポンダを指定する
モーションイベントを受け取るために、あるレスポンダオブジェクトをファーストレスポンダとして指定する。これは、モーションイベントを処理したいレスポンダオブジェクトである。リスト４−２は、レスポンダがどのように自分自身をファーストレスポンダにすることができるかを示す。
リスト４−２  ファーストレスポンダになる
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)viewDidAppear:(BOOL)animated {
[self becomeFirstResponder];
}
モーションイベントは、レスポンダチェーンを使用して、イベントを処理することができるオブジェクトを見つける。ユーザがデバイスを振ることを開始すると、ｉＯＳは、ファーストレスポンダに最初のモーションイベントを送る。ファーストレスポンダがイベントを処理しなかった場合、ファーストレスポンダはレスポンダチェーンを進める。詳細については、レスポンダチェーンは特定の配信経路に従う（ページ３５）を参照されたい。シェイキングモーションイベントが処理されずにウィンドウまでレスポンダチェーンを移動し、ＵＩＡｐｐｌｉｃａｔｉｏｎのａｐｐｌｉｃａｔｉｏｎＳｕｐｐｏｒｔｓＳｈａｋｅＴｏＥｄｉｔプロパティがＹＥＳ（デフォルト）に設定されている場合、ｉＯＳはＵｎｄｏコマンド及びＲｅｄｏコマンドを有するシートを表示する。
【０６２７】
モーションハンドリングメソッドを実装する
３つのモーションハンドリングメソッド：ｍｏｔｉｏｎＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：、ｍｏｔｉｏｎＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：、及びｍｏｔｉｏｎＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：が存在する。モーションイベントを処理するために、ｍｏｔｉｏｎＢｅｇａｎ：ｗｉｔｈＥｖｅｎｔ：メソッド又はｍｏｔｉｏｎＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドのいずれか、及び時々両方を実装しなければならない。レスポンダは、ｉＯＳがモーションイベントを取り消したときに応答するために、ｍｏｔｉｏｎＣａｎｃｅｌｌｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッドも実装するべきである。シェイクモーションが中断された場合、又はモーションが結局有効ではなかったとｉＯＳが判断した場合、たとえば、シェイキングが長く続きすぎる場合、イベントは取り消される。
リスト４−３は、サンプルコードプロジェクト、ＧＬＰａｉｎｔから引用されている。このアプリでは、ユーザが画面上でペイントし、次いで、デバイスを振ってペインティングを消去する。このコードは、シェイクがｍｏｔｉｏｎＥｎｄｅｄ：ｗｉｔｈＥｖｅｎｔ：メソッド内で発生したかどうかを検出し、そうである場合、ｓｈａｋｅ−ｔｏ−ｅｒａｓｅ機能を実施するように通知をポストする。
リスト４−３  モーションイベントを処理する
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake)
{
／／ユーザがデバイスを振っていた。「シェイク」という名前の通知をポストする
[[NSNotificationCenter defaultCenter] postNotificationName:@"shake"object:self];
}
}
注：その簡潔さに加えて、コアモーションの代わりにシェイクモーションイベントを使用することを考慮する別の理由は、アプリをテスト及びデバッグするとき、ｉＯＳシミュレータ内でシェイクモーションイベントをシミュレートできることである。ｉＯＳシミュレータの詳細については、ｉＯＳ  Ｓｉｍｕｌａｔｏｒ  Ｕｓｅｒ  Ｇｕｉｄｅを参照されたい。
【０６２８】
モーションイベントに必要なハードウェア能力を設定及びチェックする
アプリが加速度計データなどのデバイスに関連する機能にアクセスすることができる前に、アプリに必要な能力のリストを追加しなければならない。具体的には、アプリのＩｎｆｏ．ｐｌｉｓｔファイルにキーを追加する。実行時、ｉＯＳは、デバイスが必要な能力を有する場合のみ、アプリを起動する。たとえば、アプリがジャイロスコープデータに依拠する場合、アプリがジャイロスコープがないデバイス上で起動されないように、ジャイロスコープを必須として列挙する。Ａｐｐ  Ｓｔｏｒｅもこのリストを使用して、ユーザが実行することができないアプリをダウンロードすることを回避できるように、ユーザに知らせる。
アプリのプロパティリストにキーを以下することによって、アプリの必要な能力を宣言する。ハードウェアソースに基づいて、モーションイベント用の２つのＵＩＲｅｑｕｉｒｅｄＤｅｖｉｃｅＣａｐａｂｉｌｉｔｉｅｓキーが存在する。
・ａｃｃｅｌｅｒｏｍｅｔｅｒ
・ｇｙｒｏｓｃｏｐｅ
注：アプリがデバイス方向の変化のみを検出する場合、ａｃｃｅｌｅｒｏｍｅｔｅｒキーを含める必要はない。
アレイ又はディクショナリのいずれかを使用してキー値を指定することができる。アレイを使用する場合、各々の必要な機能をアレイ内のキーとして列挙する。ディクショナリを使用する場合、ディクショナリ内の必要なキーごとにブール値を指定する。両方のケースとも、機能用のキーを列挙しないことは、その機能が必要ではないことを示す。詳細については、ＵＩＲｅｑｕｉｒｅｄＤｅｖｉｃｅＣａｐａｂｉＩｉｔｉｅｓを参照されたい。
ジャイロスコープデータを使用するアプリの機能がユーザ体験に不可欠ではない場合、ジャイロスコープデバイスをもたないユーザがアプリをダウンロードすることを許可したいかもしれない。ジャイロスコープを必要なハードウェア能力にしないが、ジャイロスコープデータを必要とするコードをまだ有する場合、実行時にジャイロスコープが利用可能かどうかをチェックする必要がある。ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスのｇｙｒｏＡｖａｉｌａｂｌｅプロパティを用いてこれを行う。
【０６２９】
コアモーションを用いてデバイスの動きを取り込む
コアモーションフレームワークは、主に、生の加速度計データ及びジャイロスコープデータにアクセスし、そのデータを処理用のアプリに渡すことに関与する。コアモーションは、ユニークなアルゴリズムを使用して、収集した生データを処理し、その結果、コアモーションは、より精密な情報を提示することができる。この処理は、フレームワーク自体のスレッド上で行われる。
コアモーションは、ＵＩＫｉｔとは別個である。コアモーションはＵＩＥｖｅｎｔモデルと接続されず、レスポンダチェーンを使用しない。代わりに、コアモーションは、モーションイベントを必要とするアプリに直接それらを配信するだけである。
コアモーションイベントは、各々が１つ又は複数の測定値をカプセル化する、３つのデータオブジェクトによって表される。
・ＣＭＡｃｃｅｌｅｒｏｍｅｔｅｒＤａｔａオブジェクトは、空間軸の各々に沿った加速度を取り込む。
・ＣＭＧｙｒｏＤａｔａオブジェクトは、３つの空間軸の各々のまわりの回転速度を取り込む。
・ＣＭＤｅｖｉｃｅＭｏｔｉｏｎオブジェクトは、姿勢並びに回転速度及び加速度のより有用な測定値を含む、いくつかの異なる測定値をカプセル化する。
ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスは、コアモーション用の中央アクセスポイントである。クラスのインスタンスを作成し、更新間隔を指定し、その更新開始を要求し、モーションイベントが配信されるとそれらを処理する。アプリは、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスの単一のインスタンスのみを作成するべきである。このクラスの複数のインスタンスは、アプリが加速度計及びジャイロスコープからデータを受け取る速度に影響を及ぼすことができる。
コアモーションのデータカプセル化クラスのすべてはＣＭＬｏｇｌｔｅｍのサブクラスであり、ＣＭＬｏｇｌｔｅｍは、モーションデータが時間でタグ付けされファイルにログされ得るようにタイムスタンプを定義する。アプリは、モーションイベントのタイムスタンプを前のモーションイベントと比較して、イベント間の真の更新間隔を決定することができる。
記載されたデータモーションタイプの各々に対して、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスは、モーションデータを取得するための２つの手法を提供する。
・プルアプリは、更新開始を要求し、次いで、モーションデータの最新の測定値を周期的にサンプリングする。
・プッシュアプリは、更新間隔を指定し、データを処理するためのブロックを実装する。次いで、アプリは、その更新開始を要求し、動作キュー及びブロックをコアモーションに渡す。コアモーションは、各更新をブロックに配信し、ブロックは動作キュー内のタスクとして実行される。
プルは、ほとんどのアプリ、特にゲーム向けの推奨手法である。プルは、一般に、より効率的で、少ないコードしか必要としない。プッシュは、たった１つのサンプル測定値も逃すことができないデータ収集アプリ及び同様のアプリに適している。両方の手法は、良好なスレッド安全効果を有し、プッシュの場合、ブロックは動作キューのスレッド上で実行され、プルの場合、コアモーションはスレッドを決して中断しない。
重要：コアモーションの場合、デバイス上でアプリをテスト及びデバッグしなければならない。加速度計データ又はジャイロスコープデータのためのｉＯＳシミュレータ内のサポートは存在しない。
アプリが必要なデータの処理を終了するやいなや、常にモーション更新を停止する。結果として、コアモーションはモーションセンサをオフにすることができ、それにより、バッテリ電力が節約される。
【０６３０】
モーションイベント更新間隔を選ぶ
コアモーションを用いてモーションデータを要求するとき、更新間隔を指定する。アプリのニーズを満たす最大の間隔を選ぶべきである。間隔が大きいほど、少ないイベントがアプリに配信され、それにより、バッテリ寿命が改善される。表４−１は、いくつかの一般的な更新周波数を列挙し、その周波数で生成されたデータを用いて何をすることができるかを説明する。毎秒１００回配信される加速度イベントを必要とするアプリは少ない。
【表１７】
0006559881.tif 000018
１００Ｈｚの更新レートに対応する１０ミリ秒（ｍｓ）くらい小さくなるように報告間隔を設定することができるが、ほとんどのアプリは、より大きい間隔でも十分動作する。
コアモーションを使用して加速度計イベントを処理する
加速度計は、図４−１に示されたように、３つの軸に沿って時間とともに速度を測定する。コアモーションの場合、各々の動きはＣＭＡｃｃｅｌｅｒｏｍｅｔｅｒＤａｔａオブジェクト内に取り込まれ、ＣＭＡｃｃｅｌｅｒｏｍｅｔｅｒＤａｔａオブジェクトはタイプＣＭＡｃｃｅｌｅｒａｔｉｏｎの構造をカプセル化する。
【表１８】
0006559881.tif 000019
加速度計データの取込み及び処理を開始するために、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスのインスタンスを作成し、以下のメソッドのうちの１つをコールする。
【０６３１】
・ｓｔａｒｔＡｃｃｅｌｅｒｏｍｅｔｅｒＵｐｄａｔｅｓ−プル手法
このメソッドをコールした後、コアモーションは、加速度計の活動の最新の測定値を用いてＣＭＭｏｔｉｏｎＭａｎａｇｅｒのａｃｃｅｌｅｒｏｍｅｔｅｒＤａｔａプロパティを継続的に更新する。次いで、通常、ゲームにおいて一般的なレンダーループ内で、このプロパティを周期的にサンプリングする。このポーリング手法を採用した場合、更新間隔プロパティ（ａｃｃｅｌｅｒｏｍｅｔｅｒＵｐｄａｔｅｌｎｔｅｒｖａｌ）をコアモーションが更新を実施する最大間隔に設定する。
・ｓｔａｒｔＡｃｃｅｌｅｒｏｍｅｔｅｒＵｐｄａｔｅｓＴｏＱｕｅｕｅ：ｗｉｔｈＨａｎｄｌｅｒ：−プッシュ手法
このメソッドをコールする前に、ａｃｃｅｌｅｒｏｍｅｔｅｒＵｐｄａｔｅｌｎｔｅｒｖａｌプロパティに更新間隔を割り当て、ＮＳＯｐｅｒａｔｉｏｎＱｕｅｕｅのインスタンスを作成し、加速度計の更新を処理するタイプＣＭＡｃｃｅｌｅｒｏｍｅｔｅｒＨａｎｄｌｅｒのブロックを実装する。次いで、動作キュー及びブロック内に渡して、モーションマネージャオブジェクト上のｓｔａｒｔＡｃｃｅｌｅｒｏｍｅｔｅｒＵｐｄａｔｅｓＴｏＱｕｅｕｅｉｗｉｔｈＨａｎｄｌｅｒ：メソッドをコールする。指定された更新間隔で、コアモーションは、加速度計の活動の最新サンプルをブロックに渡し、ブロックはキュー内のタスクとして実行される。
リスト４−４（ページ６３）はこの手法を示す。
リスト４−４は、より多くのコンテキストを調べることができる、ＭｏｔｉｏｎＧｒａｐｈｓサンプルコードプロジェクトから引用されている。このアプリでは、ユーザがスライダを動かして更新間隔を指定する。ｓｔａｒｔＵｐｄａｔｅｓＷｉｔｈＳｌｉｄｅｒＶａｌｕｅ：メソッドは、スライダ値を使用して新しい更新間隔を計算する。次いで、ｓｔａｒｔＵｐｄａｔｅｓＷｉｔｈＳｌｉｄｅｒＶａｌｕｅ：メソッドは、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスのインスタンスを作成し、デバイスが加速度計を有することを確認するためにチェックし、更新間隔をモーションマネージャに割り当てる。このアプリは、プッシュ手法を使用して加速度計データを取り出し、それをグラフ上にプロットする。このアプリは、ｓｔｏｐＵｐｄａｔｅｓメソッド内の加速度計の更新を停止することに注意されたい。
リスト４−４  ＭｏｔｉｏｎＧｒａｐｈｓ内で加速度計データにアクセスする
static const NSTimeInterval accelerometerMin = 0.01;
- (void)startUpdatesWithSliderValue:(int)sliderValue {
／／更新間隔を決定する
NSTimeInterval delta = 0.005;
NSTimeInterval updateInterval = accelerometerMin + delta * sliderValue;
／／CMMotionManagerを作成する
CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];
APLAccelerometerGraphViewController * _weak weakSelf = self;
／／加速度計が利用可能かどうかをチェックする
if ([mManager isAccelerometerAvailable] == YES ){
／／モーションマネージャに更新間隔を割り当てる
[mManager setAccelerometerUpdateInterval:updateInterval];
[mManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAcceleronieterData *accelerometerData, NSError terror) {
[weakSelf.graphView addX:accelerometerData.acceleration.x y:accelerometerData.acceleration.y z:accelerometerData.acceleration.z];
[weakSelf setLabelValueX:accelerometerData.acceleration.x y:accelerometerData.acceleration.y z:accelerometerData.acceleration.z];
}];
}
seif.updateIntervalLabel.text = [NSString stringWithFormat:@"%f", updateInterval];
}
- (void)stopUpdates {
CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];
if ([mManager isAccelerometerActive] == YES) {
[mManager stopAccelerometerUpdates];
}
}
【０６３２】
回転速度データを処理する
ジャイロスコープは、図４−２に示されたように、３つの空間軸の各々のまわりをデバイスが回転する速度を測定する。
【表１９】
0006559881.tif 000020
ジャイロスコープの更新を要求するたびに、コアモーションは、回転速度のバイアスされた推定値を取り、この情報をＣＭＧｙｒｏＤａｔａオブジェクト内で返す。ＣＭＧｙｒｏＤａｔａは、ＣＭＲｏｔａｔｉｏｎＲａｔｅ構造を記憶するｒｏｔａｔｉｏｎＲａｔｅプロパティを有し、ＣＭＲｏｔａｔｉｏｎＲａｔｅ構造は、毎秒３つの軸の各々についての回転速度をラジアン単位で取り込む。ＣＭＧｙｒｏＤａｔａオブジェクトによって測定された回転速度はバイアスされていることに注意されたい。ＣＭＤｅｖｉｃｅＭｏｔｉｏｎクラスを使用することにより、はるかに正確な、バイアスされていない測定値を取得することができる。詳細については、処理デバイスのモーションデータを処理する（ページ６７）を参照されたい。
回転速度データを分析しているとき−特に、ＣＭＲｏｔａｔｉｏｎＭａｔｒｉｘ構造のフィールドを分析しているとき−、図４−２に示されたように、「右手の法則」に従って回転方向を特定する。たとえば、親指の先端が正のｘの方向を指すようにｘ軸のまわりに右手をくるめた場合、正回転は他の４本の指の先端に向かう回転である。逆回転は、それらの指の先端から離れていく。
回転速度データの受取り及び処理を開始するために、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスのインスタンスを作成し、以下のメソッドのうちの１つをコールする。
・ｓｔａｒｔＧｙｒｏＵｐｄａｔｅｓ−プル手法
このメソッドをコールした後、コアモーションは、ジャイロスコープの活動の最新の測定値を用いてＣＭＭｏｔｉｏｎＭａｎａｇｅｒのｇｙｒｏＤａｔａプロパティを継続的に更新する。次いで、このプロパティを周期的にサンプリングする。このポーリング手法を採用した場合、更新間隔プロパティ（ｇｙｒｏＵｐｄａｔｅｌｎｔｅｒｖａｌ）をコアモーションが更新を実施する最大間隔に設定する。
・ｓｔａｒｔＧｙｒｏＵｐｄａｔｅｓＴｏＱｕｅｕｅ：ｗｉｔｈＨａｎｄｌｅｒ：−プッシュ手法
このメソッドをコールする前に、ｇｙｒｏＵｐｄａｔｅｌｎｔｅｒｖａｌプロパティに更新間隔を割り当て、ＮＳＯｐｅｒａｔｉｏｎＱｕｅｕｅのインスタンスを作成し、ジャイロスコープの更新を処理するタイプＣＭＧｙｒｏＨａｎｄｌｅｒのブロックを実装する。次いで、動作キュー及びブロック内に渡して、モーションマネージャオブジェクト上のｓｔａｒｔＧｙｒｏＵｐｄａｔｅｓＴｏＱｕｅｕｅ：ｗｉｔｈＨａｎｄｌｅｒ：メソッドをコールする。指定された更新間隔で、コアモーションは、ジャイロスコープの活動の最新サンプルをブロックに渡し、ブロックはキュー内のタスクとして実行される。
リスト４−５はこの手法を実演する。
リスト４−５もＭｏｔｉｏｎＧｒａｐｈｓサンプルコードプロジェクトから引用され、リスト４−４とほとんど同一である。このアプリは、プッシュ手法を使用してジャイロスコープデータを取り出し、その結果、画面上にデータをプロットすることができる。
リスト４−５  ＭｏｔｉｏｎＧｒａｐｈｓ内でジャイロスコープデータにアクセスする
static const NSTimeInterval gyroMin = 0.01;
- (void)startUpdatesWithSliderValue:(int)sliderValue {
／／更新間隔を決定する
NSTimeInterval delta = 0.005;
NSTimeInterval updateInterval = gyroMin + delta * sliderValue;
／／CMMotionManagerを作成する
CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];
APLGyroGraphViewController * _weak weakSelf = self;
／／ジャイロスコープが利用可能かどうかをチェックする
if ([mManager isGyroAvailable] == YES){
／／更新間隔をモーションマネージャに割り当てる
[mManager setGyroUpdateInterval:updateInterval];
[mManager startGyroUpdatesToQueue: [NSOperationQueue mainQueue] withHandler:^(CMGyroData *gyroData, NSError *error) {
[weakSelf.graphView addX:gyroData.rotationRate.x y:gyroData.rotationRate.y z:gyroData.rotationRate.z];
[weakSelf setLabelValueX:gyroData.rotationRate.x y:gyroData.rotationRate.y z:gyroData.rotationRate.z];
}];
}
self.updateIntervalLabel.text = [NSString stringWithFormat:@"%f", updateInterval];
}
- (void)stopUpdates{
CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];
if ([mManager isGyroActive] == YES){
[mManager stopGyroUpdates];
}
}
【０６３３】
処理デバイスのモーションデータを処理する
デバイスが加速度計とジャイロスコープの両方を有する場合、コアモーションは、両方のセンサからの生のモーションデータを処理するデバイスモーションサービスを提供する。デバイスモーションは、センサ融合アルゴリズムを使用して生データを洗練させ、デバイスの姿勢、そのバイアスされていない回転速度、デバイスの重力方向、及びユーザ生成加速度についての情報を生成する。ＣＭＤｅｖｉｃｅＭｏｔｉｏｎクラスのインスタンスは、このデータのすべてをカプセル化する。加えて、デバイスモーションは重力とユーザ加速度を分離するので、加速度データをフィルタリングする必要がない。
ＣＭＡｔｔｉｔｕｄｅオブジェクトをカプセル化するＣＭＤｅｖｉｃｅＭｏｔｉｏｎオブジェクトのａｔｔｉｔｕｄｅプロパティを通して、姿勢データにアクセスすることができる。ＣＭＡｔｔｉｔｕｄｅクラスの各インスタンスは、姿勢の３つの数学的表現：
・四元数
・回転行列
・３つのオイラー角（回転、ピッチ、及び偏揺れ）
をカプセル化する。
デバイスモーション更新の受取り及び処理を開始するために、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラスのインスタンスを作成し、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒクラス上の以下の２つのメソッドのうちの１つをコールする。
・ｓｔａｒｔＤｅｖｉｃｅＭｏｔｉｏｎＵｐｄａｔｅｓ−プル手法
このメソッドをコールした後、コアモーションは、ＣＭＤｅｖｉｃｅＭｏｔｉｏｎオブジェクト内にカプセル化された、加速度計及びジャイロスコープの活動の最新の洗練された測定値を用いて、ＣＭＭｏｔｉｏｎＭａｎａｇｅｒのｄｅｖｉｃｅＭｏｔｉｏｎプロパティを継続的に更新する。次いで、このプロパティを周期的にサンプリングする。このポーリング手法を採用した場合、更新間隔プロパティ（ｄｅｖｉｃｅＭｏｔｉｏｎＵｐｄａｔｅｌｎｔｅｒｖａｌ）をコアモーションが更新を実施する最大間隔に設定する。
リスト４−６はこの手法を示す。
・ｓｔａｒｔＤｅｖｉｃｅＭｏｔｉｏｎＵｐｄａｔｅｓＴｏＱｕｅｕｅ：ｗｉｔｈＨａｎｄｌｅｒ：−プッシュ手法
このメソッドをコールする前に、ｄｅｖｉｃｅＭｏｔｉｏｎＵｐｄａｔｅｌｎｔｅｒｖａｌプロパティに更新間隔を割り当て、ＮＳＯｐｅｒａｔｉｏｎＱｕｅｕｅのインスタンスを作成し、加速度計の更新を処理するＣＭＤｅｖｉｃｅＭｏｔｉｏｎＨａｎｄｌｅｒタイプのブロックを実装する。次いで、動作キュー及びブロック内に渡して、モーションマネージャオブジェクト上のｓｔａｒｔＤｅｖｉｃｅＭｏｔｉｏｎＵｐｄａｔｅｓＴｏＱｕｅｕｅ：ｗｉｔｈＨａｎｄｌｅｒ：メソッドをコールする。指定された更新間隔で、コアモーションは、ＣＭＤｅｖｉｃｅＭｏｔｉｏｎオブジェクトによって表されたように、合成された加速度計及びジャイロスコープの活動の最新サンプルをブロックに渡し、ブロックはキュー内のタスクとして実行される。
リスト４−６は、ｐＡＲｋサンプルコードプロジェクトからのコードを使用して、デバイスモーション更新をどのように開始及び終了するかを実演する。ＳｔａｒｔＤｅｖｉｃｅＭｏｔｉｏｎメソッドは、プル手法を使用して、基準フレームを用いてデバイス更新を開始する。デバイスモーションの基準フレームの詳細については、デバイス姿勢及び基準フレーム（ページ６８）を参照されたい。
リスト４−６  デバイスモーションの更新を開始及び停止する
- (void)startDeviceMotion {
／／CMMotionManagerを作成する
motionManager = [[CMMotionManager alloc] init];
／／真北基準姿勢を提供する必要があるとき、
／／コンパス較正ＨＵＤを示すようにコアモーションに伝える
motionManager.showsDeviceMovementDisplay = YES;
motionManager.deviceMotionUpdateInterval = 1.0 / 60.0;
／／真北を基準とする姿勢
[motionManager StartDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
}
- (void)stopDeviceMotion {
[motionManager stopDeviceMotionUpdates];
}
【０６３４】
デバイス姿勢及び基準フレーム
ＣＭＤｅｖｉｃｅＭｏｔｉｏｎオブジェクトは、デバイスの姿勢又は空間内の方向についての情報を含んでいる。デバイス姿勢は、常に基準フレームとの関連で測定される。コアモーションは、アプリがデバイスモーションの更新を開始するときに基準フレームを確立する。次いで、ＣＭＡｔｔｉｔｕｄｅは、その初期基準フレームからの回転をデバイスの現在の基準フレームに与える。
コアモーション基準フレームでは、ｚ軸は常に垂直であり、ｘ軸及びｙ軸は常に重力に直交し、重力は重力ベクトル［０，０，−１］を作成する。これは重力基準としても知られる。ＣＭＡｔｔｉｔｕｄｅオブジェクトから取得された回転行列を重力基準と乗算した場合、デバイスフレーム内の重力を取得する。すなわち、数学的に：である。
【数１】
0006559881.tif 000021
ＣＭＡｔｔｉｔｕｄｅが使用する基準フレームを変更することができる。それを行うために、基準フレームを含んでいる姿勢オブジェクトをキャッシュし、ｍｕｌｔｉｐｌｙＢｙｌｎｖｅｒｓｅＯｆＡｔｔｉｔｕｄｅ：に引数としてそれを渡する。メッセージを受け取る姿勢引数は、渡された基準フレームからの姿勢における変化を表すように変化する。
ほとんどのアプリはデバイス姿勢における変化に関心がある。これがどのように有用であり得るかを理解するために、ユーザがデバイスを回転させてスウィングする野球ゲームを考えよう。通常、投球の初めに、バットは同じ静止方向にあるはずである。その後、バットは、デバイスの姿勢が投球の開始からどのように変化したかに基づいてレンダリングされる。リスト４−７は、これをどのように行ってよいかを示す。
リスト４−７  レンダリングより前に姿勢における変化を取得する
-(void)startPitch {
／／referenceAttitudeはプロパティである
self.referenceAttitude = self.motionManager.deviceMotion.attitude;
}
- (void)drawView {
CMAttitude *currentAttitude = self.motionManager.deviceMotion.attitude;
[currentAttitude multiplyByInverseOfAttitude: self.referenceAttitude];
／／currentAttitudeを使用してバットをレンダリングする
[self updateModelsWithAttitude:currentAttitude];
[renderer render];
}
この例では、ｍｕＩｔｉｐｌｙＢｙＩｎｖｅｒｓｅＯｆＡｔｔｉｔｕｄｅ：メソッドがリターンした後、ｃｕｒｒｅｎｔＡｔｔｉｔｕｄｅは、ｒｅｆｅｒｅｎｃｅＡｔｔｉｔｕｄｅから最近サンプリングされたＣＭＡｔｔｉｔｕｄｅインスタンスへの姿勢における変化を表す。
【０６３５】
リモートコントロールイベント
ＳｗｉｆｔＯｂｊｅｃｔｉｖｅ−Ｃ
リモートコントロールイベントは、ユーザがアプリのマルチメディアを制御するための方法である。リモートコントロールイベントは、外部アクセサリ、又はシステムによって表示されるトランスポートコントロールを発生源とし、メディアプレーヤフレームワークのクラスを通してアプリに配信される。オーディオ又はビデオのコンテンツを再生するアプリは、これらのイベントを使用して、再生を開始及び終了し、トラックを変更し、アイテムを格付けさえする。すべてのメディアアプリは、これらのイベントをサポートするべきである。
リモートコントロールイベントをサポートすることに加えて、アプリは、メディアプレーヤフレームワークを使用してトラック用の再生情報を提供することができる。システムは、ロック画面及びコントロールセンタなどの適切な場所に再生情報を表示する。
メディアプレーヤフレームワークのクラスの詳細については、Ｍｅｄｉａ  Ｐｌａｙｅｒ  Ｆｒａｍｅｗｏｒｋ  Ｒｅｆｅｒｅｎｃｅを参照されたい。
【０６３６】
リモートコントロールイベントに対してアプリを準備する
リモートコントロールイベントを受け取るために、以下を行う。
・サポートするアクションごとにハンドラを登録する。リモートコントロールイベントを処理する（ページ７０）に記載されるように、共有ＭＰＲｅｍｏｔｅＣｏｍｍａｎｄＣｅｎｔｅｒオブジェクトを使用して、様々なタイプのイベント用のハンドラを登録する。
・オーディオの再生を開始する。アプリは「再生中」アプリに違いない。アプリは、オーディオの再生を開始するまで、リモートコントロールイベントを受け取らない。
アプリが現在のトラックについての情報を含んでいる再生中情報も提供する場合、ＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＣｅｎｔｅｒオブジェクトを使用して、適当なときにその情報を更新する。再生中情報をどのように提供するかの詳細については、再生中情報を提供する（ページ７１）を参照されたい。
【０６３７】
リモートコントロールイベントを処理する
特定のリモートコントロールイベントを処理するために、適切なＭＰＲｅｍｏｔｅＣｏｍｍａｎｄオブジェクトを用いてアクションハンドラを登録する。メディアプレーヤフレームワークは、メディア関連イベントを処理するためのＭＰＲｅｍｏｔｅＣｏｍｍａｎｄオブジェクトの標準セットを定義する。アクセサリ又はｉＯＳインターフェースがリモートコントロールイベントを生成すると、システムは対応するＭＰＲｅｍｏｔｅＣｏｍｍａｎｄオブジェクトに通知する。そのオブジェクトは、任意のアタッチされたハンドラを実行することによって応答する。
共有ＭＰＲｅｍｏｔｅＣｏｍｍａｎｄＣｅｎｔｅｒオブジェクトからリモートコントロールイベントを取り出す。リモートコマンドセンタのプロパティは、再生を管理し、トラックを切り替え、トラックを格付けするためのオブジェクトを含んでいる。サポートしたいオブジェクトを取り出し、ブロック又はアクションメソッドのいずれかを使用してハンドラをアタッチする。通常、コマンドのタイプごとに単一のハンドラを登録するが、必要に応じて複数のハンドラを登録することができる。リスト５−１は、ユーザがトラックを再生したいときに実行されるべきブロックをどのように登録するかを示す。この例では、ブロックは、カスタムプレーヤオブジェクトを使用して、現在選択されているトラックを再生する。コードでは、トラックを再生するために必要とするどんなアクションでも実施する。
リスト５−１  リモートコントロールイベントハンドラを登録する
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter]; [commandCenter.playCommand addTargetUsingBlock:^(MMPRemoteCommandEvent *event) {
／／現在のトラックの再生を開始する
[[MyPlayer sharedPlayer]play];
}
明確に所与のコマンドをサポートしたくない場合、コマンドオブジェクトを取り出し、そのｅｎａｂｌｅｄプロパティをＮＯに設定する。リモートコマンドを無効にすると、システムは、アプリが再生中アプリであるとき、そのコマンド用の任意の関連するＵＩを表示するべきではないことを知ることになる。
いくつかのコマンドオブジェクトは、コマンドに関係する他の情報を指定させる。たとえば、フィードバックコマンドは、フィードバックの意味を記述するローカライズされた文字列を指定させる。サポートしている特定のコマンドの情報については、参考文書を見ること。
リモートコントロールイベント用のハンドラを追加及び削除することの詳細については、ＭＰＲｅｍｏｔｅＣｏｍｍａｎｄ  Ｃｌａｓｓ  Ｒｅｆｅｒｅｎｃｅを参照されたい。
【０６３８】
再生中情報を提供する
オーディオ又はビデオのコンテンツを再生するとき、ＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＣｅｎｔｅｒオブジェクトを使用して、再生されているコンテンツについての記述情報を提供する。ＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＣｅｎｔｅｒオブジェクトは、そのコンテンツが再生されているアイテムを記述するｎｏｗＰｌａｙｉｎｇｌｎｆｏディクショナリを含んでいる。システムは、ｉＯＳデバイスのロック画面などの適切な場所にそのディクショナリからの情報を表示する。
リスト５−２は、ＭＰＭｅｄｉａＩｔｅｍ内の情報をどのように使用して再生中情報を構成するかの一例を示す。例は、プロパティの固定セットを列挙し、得られた値を使用して、次いでＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＣｅｎｔｅｒオブジェクトに割り当てられる新しいディクショナリを構築する。
リスト５−２  メディアアイテムについての再生中情報を収集する
- (void)configureNowPlayinglnfo:(MPMediaItem*)item
{
MPNowPlayinglnfoCenter* info = [MPNowPlayingInfoCenter defaultCenter];
NSMutableDictionary* newInfo = [NSMutableDictionary dictionary];
NSSet* itemProperties = [NSSet setWithObjects:MPMediaItemPropertyTitle,
MPMediaItemPropertyArtist,
MPMedialtemPropertyPlaybackDuration,
MPNowPlayingInfoPropertyElapsedPlaybackTime,
nil];
[item enumerateValuesForProperties:itemProperties
usingBlock:^(NSString *property, id value, BOOL *stop) {
[newInfo setObject:value forKey: property];
}];
info.nowPlayingInfo = newInfo;
}
注：ｉＯＳシミュレータでは、ｎｏｗＰｌａｙｉｎｇｌｎｆｏディクショナリ内にＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＰｒｏｐｅｒｔｙＰｌａｙｂａｃｋＲａｔｅキーを常に含める。シミュレータは、そのキーの値を使用して、コントロールセンタ及び他のシミュレータベースのインターフェース内に表示する再生進捗を更新する。一時停止又は停止されたトラックについて、キーの値を０に設定する。再生しているトラックについて、その値を正の数に設定する。
提供することができる情報のタイプの詳細については、ＭＰＮｏｗＰｌａｙｉｎｇｌｎｆｏＣｅｎｔｅｒ  Ｃｌａｓｓ  Ｒｅｆｅｒｅｎｃｅを参照されたい。
【０６３９】
デバイス上のリモートコントロールイベントをテストする
画面の下端から上にスワイプすることによってアクセスするコントロールセンタを用いて、アプリがリモートコントロールイベントを正しく受け取り処理することをテストする。これらのコントロールは、現在オーディオを再生しているか、又は最近オーディオを再生していたアプリにリモートコントロールイベントを送る。デバイスのロック画面から再生コントロールにアクセスすることもできる。
【０６４０】
文書改訂履歴
この表はｉＯＳ向けイベントハンドリングガイドへの変更を記載する。
【表２０】
0006559881.tif 000022
【０６４１】
Ａｐｐｌｅ  Ｉｎｃ．
Ｃｏｐｙｒｉｇｈｔ  ｃ  ２０１５  Ａｐｐｌｅ  Ｉｎｃ．
Ａｌｌ  ｒｉｇｈｔｓ  ｒｅｓｅｒｖｅｄ．
以下の例外を除き、本出版物のどの箇所も、Ａｐｐｌｅ  Ｉｎｃ．の事前の書面による許可なしに、いかなる形態、又は、機械、電子、複写、録音、若しくは別のいかなる手段でも、複製、検索システムに格納、又は伝送されてはならない。文書がＡｐｐｌｅの著作権表示を含んでいるならば、いかなる人も、個人使用のみに単一のコンピュータ又はデバイスに文書を格納すること、及び個人使用のために文書をコピー印刷することが、これにより許可される。
本文書に記載された技術のいずれに関しても、明示又は黙示を問わず、ライセンスは供与されない。Ａｐｐｌｅは、本文書に記載された技術に関連するすべての知的財産権を保持する。本文書は、アプリケーション開発者がＡｐｐｌｅブランドの製品向けにのみアプリケーションを開発することを支援するものである。
Ａｐｐｌｅ  Ｉｎｃ．
１  Ｉｎｆｉｎｉｔｅ  Ｌｏｏｐ
Ｃｕｐｅｒｔｉｎｏ，ＣＡ  ９５０１４
４０８−９９６−１０１０
Ａｐｐｌｅ、Ａｐｐｌｅロゴ、ｉＰｈｏｎｅ、Ｍａｃ、Ｓｈａｋｅ、及びＸｃｏｄｅは、米国及び他の国において登録されたＡｐｐｌｅ  Ｉｎｃ．の商標である。
Ｍｕｌｔｉ−ＴｏｕｃｈはＡｐｐｌｅ  Ｉｎｃ．の商標である。
Ａｐｐ  ＳｔｏｒｅはＡｐｐｌｅ  Ｉｎｃ．のサービスマークである。
ｉＯＳは米国及び他の国におけるＣｉｓｃｏの商標又は登録商標であり、ライセンスを受けて使用される。
Ａｐｐｌｅは、本文書、その品質、正確さ、商品適格性、又は特定目的に対する適合性に関して、明示又は黙示を問わず、いかなる保証又は表明も行わない。結果として、本文書は「無保証」で提供され、読者は、その品質及び正確さに関して全リスクを負っている。
いかなる場合も、本文書内のいかなる欠陥、誤り、又は不正確さから生じた、直接的、間接的、特殊、偶発的、又は誘発的な損害に対しても、そのような損害の可能性が勧告されていた場合でも、Ａｐｐｌｅは責任を負わない。
いくつかの管轄は暗黙の保証又は責任の排除を許可せず、そのため上記の排除は読者に適用されない場合がある。
【図１Ａ】
0006559881.tif 000023
【図１Ｂ】
0006559881.tif 000024
【図１Ｃ】
0006559881.tif 000025
【図２】
0006559881.tif 000026
【図３】
0006559881.tif 000027
【図４】
0006559881.tif 000028
【図５Ａ】
0006559881.tif 000029
【図５Ｂ】
0006559881.tif 000030
【図６Ａ】
0006559881.tif 000031
【図６Ｂ】
0006559881.tif 000032
【図７Ａ】
0006559881.tif 000033
【図７ＡＡ】
0006559881.tif 000034
【図７ＡＡＡ】
0006559881.tif 000035
【図７Ｂ】
0006559881.tif 000036
【図７ＢＢ】
0006559881.tif 000037
【図７ＢＢＢ】
0006559881.tif 000038
【図７Ｃ】
0006559881.tif 000039
【図７ＣＣ】
0006559881.tif 000040
【図７Ｄ】
0006559881.tif 000041
【図７ＤＤ】
0006559881.tif 000042
【図７Ｅ】
0006559881.tif 000043
【図７ＥＥ】
0006559881.tif 000044
【図７Ｆ】
0006559881.tif 000045
【図７ＦＦ】
0006559881.tif 000046
【図７Ｇ】
0006559881.tif 000047
【図７ＧＧ】
0006559881.tif 000048
【図７Ｈ】
0006559881.tif 000049
【図７ＨＨ】
0006559881.tif 000050
【図７Ｉ】
0006559881.tif 000051
【図７ＩＩ】
0006559881.tif 000052
【図７Ｊ】
0006559881.tif 000053
【図７ＪＪ】
0006559881.tif 000054
【図７Ｋ】
0006559881.tif 000055
【図７ＫＫ】
0006559881.tif 000056
【図７Ｌ】
0006559881.tif 000057
【図７ＬＬ】
0006559881.tif 000058
【図７Ｍ】
0006559881.tif 000059
【図７ＭＭ】
0006559881.tif 000060
【図７Ｎ】
0006559881.tif 000061
【図７ＮＮ】
0006559881.tif 000062
【図７Ｏ】
0006559881.tif 000063
【図７ＯＯ】
0006559881.tif 000064
【図７Ｐ】
0006559881.tif 000065
【図７ＰＰ】
0006559881.tif 000066
【図７Ｑ】
0006559881.tif 000067
【図７ＱＱ】
0006559881.tif 000068
【図７Ｒ】
0006559881.tif 000069
【図７ＲＲ】
0006559881.tif 000070
【図７Ｓ】
0006559881.tif 000071
【図７ＳＳ】
0006559881.tif 000072
【図７Ｔ】
0006559881.tif 000073
【図７ＴＴ】
0006559881.tif 000074
【図７Ｕ】
0006559881.tif 000075
【図７ＵＵ】
0006559881.tif 000076
【図７Ｖ】
0006559881.tif 000077
【図７ＶＶ】
0006559881.tif 000078
【図７Ｗ】
0006559881.tif 000079
【図７ＷＷ】
0006559881.tif 000080
【図７Ｘ】
0006559881.tif 000081
【図７ＸＸ】
0006559881.tif 000082
【図７Ｙ】
0006559881.tif 000083
【図７ＹＹ】
0006559881.tif 000084
【図７Ｚ】
0006559881.tif 000085
【図７ＺＺ】
0006559881.tif 000086
【図８Ａ】
0006559881.tif 000087
【図８Ｂ】
0006559881.tif 000088
【図８Ｃ】
0006559881.tif 000089
【図８Ｄ】
0006559881.tif 000090
【図８Ｅ】
0006559881.tif 000091
【図９Ａ】
0006559881.tif 000092
【図９Ｂ】
0006559881.tif 000093
【図９Ｃ】
0006559881.tif 000094
【図９Ｄ】
0006559881.tif 000095
【図１０Ａ】
0006559881.tif 000096
【図１０Ｂ】
0006559881.tif 000097
【図１０Ｃ】
0006559881.tif 000098
【図１０Ｄ】
0006559881.tif 000099
【図１１Ａ】
0006559881.tif 000100
【図１１Ｂ】
0006559881.tif 000101
【図１１Ｃ】
0006559881.tif 000102
【図１１Ｄ】
0006559881.tif 000103
【図１２Ａ】
0006559881.tif 000104
【図１２Ｂ】
0006559881.tif 000105
【図１３Ａ】
0006559881.tif 000106
【図１３Ｂ】
0006559881.tif 000107
【図１４Ａ】
0006559881.tif 000108
【図１４Ｂ】
0006559881.tif 000109
【図１４Ｃ】
0006559881.tif 000110
【図１５Ａ】
0006559881.tif 000111
【図１５Ｂ】
0006559881.tif 000112
【図１６Ａ】
0006559881.tif 000113
【図１６Ｂ】
0006559881.tif 000114
【図１７】
0006559881.tif 000115
【図１８】
0006559881.tif 000116
【図１９】
0006559881.tif 000117
【図２０】
0006559881.tif 000118
【図２１】
0006559881.tif 000119
【図２２】
0006559881.tif 000120
【図２３】
0006559881.tif 000121