タッチスクリーンジェスチャ
ジェスチャは、人々がタッチスクリーンデバイスを操作するための重要な方法であり、コンテンツとの密接な個人的なつながりを引き出し、スクリーン上のオブジェクトを直接操作する感覚を高めます。
タッチスクリーンを使用するのに加えて、トラックパッド、マウス、リモコン、ゲームコントローラなどのデバイスを使用してジェスチャを行うこともできます。たとえば、トラックパッドを使用して iPad や Mac を操作したり、ゲームコントローラを使用して iPhone、iPad、Mac、および Apple TV を操作したりできます。これらのデバイスからの入力を組み込んだガイダンスについては、ポインティングデバイス、リモコン、および ゲームコントローラ を参照してください。
タッチスクリーンデバイスはすべて、タップ、スワイプ、ドラッグなどの基本的なジェスチャを使用します。一部のプラットフォームでは、追加のジェスチャが定義されています。たとえば、iOS と iPadOS ではピンチと回転をサポートしています。タッチスクリーンジェスチャをあなたのインターフェイスに組み込むときは、慣れ親しんだ一貫した体験を提供できるように、各プラットフォームの 標準ジェスチャ の動作を理解する必要があります。
ベストプラクティス
一般に、他のアプリと一貫性のある方法でジェスチャに応答します。 人々は、現在のコンテキストに関係なく、ほとんどのジェスチャが同じように機能することを期待しています。たとえば、人々はピンチジェスチャでビューのズームレベルを調整したり、選択したオブジェクトをスケーリングしたりすることを期待しています。使い慣れたジェスチャを使用してあなたのアプリ固有のアクションを実行することは避けてください。同様に、ボタンの選択や長いビューのスクロールなどの標準的なアクションを実行するための独自のジェスチャを作成することも避けてください。
カスタムジェスチャは、必要な場合にのみ定義してください。 カスタムジェスチャを見つけて覚えるのが難しいと感じる人々がいるかもしれません。実行するのが面倒な場合は、それを使用したくない、または使用できない可能性があります。ゲームや描画アプリなど、コンテキスト固有の操作を必要とする没入型体験をあなたのアプリが提供する状況や、watchOS でのピンチや SpriteKit や ScreenKit シーンでのジェスチャなど、標準的なジェスチャがシステムで処理されない場合は、カスタムジェスチャが望ましいです。カスタムジェスチャを定義する場合は、以下のことを確認してください。
ジェスチャが適切なコンテンツに適用されることを確認してください。 一般に、ジェスチャは、選択された要素、ウィンドウ内のアクティブなビュー、写真などの項目上の領域など、人々が現在操作しているコンテンツに適用する必要があります。指の位置を使用して、人々が操作するだろう最も具体的なコンテンツを特定し、そのコンテンツをジェスチャのターゲットにすることから始めます。コンテンツがジェスチャに反応しない場合は、より高いコンテンツレベルとコンテナをターゲットにすることを検討してください。
ジェスチャを可能な限り応答して処理します。 ジェスチャは、直接操作の体験を向上させ、即時のライブフィードバックを提供します。人々があなたのアプリでジェスチャを実行するときに、その結果を予測するのに役立つフィードバックを提供し、必要に応じて、アクションを完了するために必要な動きの範囲と種類を伝えます。
ショートカットジェスチャを有効にして、標準ジェスチャを置き換えるのではなく、それらを補足します。 人々は、1 回か 2 回余分にタップすることを意味する場合でも、ナビゲートしてアクションを実行するためのシンプルで使い慣れた方法を必要としています。たとえば、スクリーンの階層を介したナビゲーションをサポートするアプリでは、人々はナビゲーションバーに [戻る] ボタンがあり、1 回タップするだけで前の画面に戻ることができると期待します。このアクションを高速化するために、多くのアプリではショートカットジェスチャ (ディスプレイやウィンドウの側面からのスワイプなど) も提供されていますが、[戻る] ボタンは引き続き提供されています。
システム全体のスクリーン端のジェスチャに干渉しないで下さい。 デバイスによっては、スクリーン端のジェスチャでホームスクリーン、アプリスイッチャー、通知センター、コントロールセンター、ドックにアクセスできます。人々はこれらのジェスチャに依存していて、すべてのアプリで動作します。まれに、ゲームのような没入型アプリでは、システムのジェスチャよりも優先されるカスタムのスクリーン端のジェスチャが必要になることがあります。このまれなシナリオでは、ゲームで エッジプロテクト と呼ばれる動作を使用できます。この動作では、最初のスワイプでアプリ固有のジェスチャが呼び出され、2 つ目のスワイプでシステムジェスチャが呼び出されます。カスタムのスクリーン端のジェスチャを有効にしなければならない場合は、システムレベルのアクションにアクセスする前に 2 つ目のジェスチャを実行しなければならないため、エッジプロテクト は慎重に使用してください。開発者向けのガイダンスについては、UIViewController (UIViewController) の preferredScreenEdgesDeferringSystemGestures (preferredScreenEdgesDeferringSystemGestures) プロパティを参照してください。
標準的ジェスチャ
ジェスチャ | iOS | iPadOS | watchOS | 標準的アクション |
タップ |
|
|
| コントロールをアクティブに。 アイテムを選択。 |
スワイプ |
|
|
| アクションとコントロールを表示。 ビューを閉じる。 スクロール。 |
パン(UIKit)/ ドラッグ(SwiftUI) |
|
|
| UI 要素を移動。 |
ピンチ(UIKit)/ 倍率(SwiftUI) |
|
| – | ビューをズーム。 コンテンツを拡大。 |
長押し |
|
|
| 追加のコントロールか機能を表示 |
回転 |
|
| – | 選択した項目を回転。 |
端をスワイプ |
|
|
| ナビゲートします。 コントロール、情報、またはシステム体験を表示。 |
ダブルタップ |
|
| – | ズームイン。 すでにズームインしている場合はズームアウト。 |
3 本指スワイプ |
|
| – | 取り消し(左スワイプ)を開始。 やり直し(右スワイプ)を開始。 |
4 本指スワイプ | – |
| – | アプリの切り替え。 |
3 本指ピンチ |
|
| – | 選択したテキストをコピー(ピンチイン)。 コピーしたテキストをペースト(ピンチアウト)。 |
プラットフォームの考慮事項
macOS または tvOS ではサポートされていません。
iOS、iPadOS
体験が向上する場合は、複数のジェスチャの同時認識を有効にすることを検討してください。 同時ジェスチャは、ゲーム以外のアプリではあまり役に立ちませんが、ゲームには、人々が同時に操作できる複数のスクリーン上のコントロール (ジョイスティックや発射ボタンなど) が含まれます。あなたの iPadOS アプリでのタッチスクリーン入力と Apple Pencil 入力の統合に関するガイダンスについては、Apple Pencil と 落書き を参照してください。
watchOS
長押しジェスチャに代わる方法を検討してください。 watchOS 7 より前のバージョンの watchOS では、人々がディスプレイを強く押すと、文字盤を変更したり、強制タッチメニューと呼ばれる非表示のメニューを表示したりしました。watchOS 7 以降では、システムアプリにより、関連するスクリーンまたは設定スクリーンで、以前は非表示になっていたメニュー項目にアクセスできるようになります。非表示のメニューを開く長押しジェスチャを以前サポートしていた場合は、メニュー項目を別の場所に移動することを検討してください。ガイダンスについては、メニュー を参照してください。
リソース
関連
開発者用文書
UITouch — UIKit (UITouch)
ビデオ
流れるインターフェース
のデザイン
WWDC 2018