アクションシート
アクションシートは、人々が開始するアクションに関連する選択肢を提示するモーダルビューです。
開発者ノート
SwiftUI を使用すると、確認ダイアログの プレゼンテーション修飾子 (Presentation modifiers) を指定することで、すべてのプラットフォームでアクションシート機能を有効にできます。UIKit を使用する場合は、UIAlertController (UIAlertController) の actionSheet スタイルを使用して、iOS、iPadOS、および tvOS でアクションシートを表示します。
ベストプラクティス
アラートではなく、アクションシートを使用して、意図的なアクションに関連する選択肢を提供します。 たとえば、人々が編集中の メール メッセージをキャンセルする場合、アクションシートには、編集内容 (または下書き全体) を削除する、下書きを保存する、または編集に戻るという 3 つの選択肢があります。アラートは、人々が破壊的な結果をもたらすアクションを確認またはキャンセルするのにも役立ちますが、アクションに関連する追加の選択肢は提供しません。さらに重要なことに、アラートは通常予期せぬものであり、通常行動が必要になる問題や現在の状況の変化について人々に伝えます。ガイダンスについては、アラート を参照してください。
アクションシートは控えめに使用してください。 アクションシートは人々に重要な情報と選択肢を与えますが、そうするために現在のタスクを中断します。人々にアクションシートに注意を向けさせるには、必要以上に使用しないようにします。
タイトルは 1 行で表示できるように短くすることを目指します。 長いタイトルはすぐに読むのが難しく、途中で切り捨てられたり、人々がスクロールを必要になったりします。
必要な場合にのみメッセージを提供してください。 一般にタイトルは、現在のアクションのコンテキストと組み合わせて、人々が自分の選択を理解するのに役立つ十分な情報を提供します。
必要に応じて、人々がデータを破壊する可能性のあるアクションを拒否できる [キャンセル] ボタンを提供します。 アクションシートの下部 (または watchOS のシートの左上隅) に [キャンセル] ボタンを配置します。SwiftUI の確認ダイアログには、デフォルトで [キャンセル] ボタンが含まれています。
破壊的な選択を視覚的に目立つようにします。 破壊的なアクションを実行するボタンには破壊的なスタイルを使用し、これらのボタンを最も目立つアクションシートの最上部に配置します。開発者向けガイダンスについては、destructive (SwiftUI) または UIAlertAction.Style.destructive (UIKit) を参照してください。
プラットフォームの考慮事項
macOS または tvOS に関する追加の考慮事項はありません。
iOS、iPadOS
メニューではなくアクションシートを使用して、アクションに関連する選択肢を提供します。 人々は、選択を明確にする必要があるアクションを実行するときに、アクションシートが表示されることに慣れています。対照的に、人々は、メニューの表示を選択したときに、メニューが表示されることを期待しています。
アクションシートをスクロールさせないようにします。 アクションシートのボタンが多いほど、人々が選択を行うのに多くの時間と労力がかかります。また、ボタンをうっかりタップせずにアクションシートをスクロールするのは難しくなります。
watchOS
アクションシートのシステムで定義されたスタイルには、タイトル、オプションのメッセージ、[キャンセル] ボタン、および 1 つ以上の追加ボタンが含まれます。このインターフェイスの外観は、デバイスによって異なります。
シリーズ 4 以降
シリーズ 3 以前
それぞれのボタンには、ボタンの効果に関する情報を伝える関連したスタイルがあります。システムには 3 つの定義されたボタンスタイルがあります。
スタイル | 意味 |
デフォルト | ボタンに特別な意味はありません。 |
破壊的 | ボタンは、ユーザーのデータを破壊するか、アプリで破壊的なアクションを実行します。 |
キャンセル | ボタンは、アクションを実行せずにビューを閉じます。 |
[キャンセル] ボタンを含めて、アクションシートに 4 つ以上のボタンを表示しないようにします。 スクリーン上のボタンが少ないほど、すべてのオプションを一度に表示しやすくなります。[キャンセル] ボタンは必須であるため、追加の選択肢は 3 つまでにしてください。
リソース
関連
開発者用文書
confirmationDialog(_:isPresented:titleVisibility:actions:) — SwiftUI (confirmationDialog(_:isPresented:titleVisibility:actions:))
UIAlertController.Style.actionSheet — UIKit
ビデオ
UIKit でのシートのカスタマイズとサイズ変更
WWDC21