Table of Contents
iOSアプリのフォームの役割
フォームは、iOSアプリケーションでユーザーから構造化されたデータを収集するための主要なメカニズムです。 ユーザー登録、チェックアウト、フィードバック、構成、またはログイン、フォームデザインの品質が直接ユーザー満足、変換率、およびデータ完全性に影響を及ぼすかどうか。 よく設計されたフォームは、認知負荷を減らし、ユーザーのニーズを予測し、ユーザーが効率的に完了に向けて誘導します。 AppleのHuman Interfaceガイドラインによると、効果的なフォームは明快さを維持し、有意義なフィードバックを提供し、ユーザー入力を尊重します。 このユーザーは、iOSの検証を行なうために、ユーザーのニーズを把握し、適切な方法で検証します。
iOS フォームのユーザー中心のデザイン原則
ユーザーが実際に入力したいフォームをデザインするには、画面にフィールドを配置するだけで、より多くの必要が要求されます。 コンテキストの深い理解、複雑性を入力、デバイスの機能が必要です。
シンプルで集中的に
追加のフィールドは、放棄のチャンスを増加させます。タスクに必要な情報だけを要求します。オプションのデータが有用であれば、明確にマークし、後で収集することを検討してください。圧倒的なユーザーを避けるために、長いフォームを論理的なステップまたはセクションに破棄します。例えば、複数のステップの登録は、最初に資格情報を集め、その後のプロファイルの詳細を収集することができます。
iOS のレバレッジ 精度のための入力タイプ
iOS は、データ入力を最適化する特殊なキーボードタイプを提供します。 ]UIKeyboardType.emailAddress] は、メールフィールド、 UIKeyboardType.numberPad を数値入力に使用し、]]] ]] ストリームのフィールドに [[FLT:]] [FLT: [FLT:]] [FLT: [FLT:]] [FLT: [FLT:] [FLT:] [FLT:] [FLT:] [F] [FLT: [F] ストリームは、 [FLT: [FLT: [[FLT: [F] [F] [F] [F] [[F] [F] [F] [[FLT: [F] [F] [F] [F] [F] [[F] [[F] [F] [[F] [FLT:[F]]] [[F]]] [[F] [[FLT
クリアラベルとプレースホルダーテキスト
フィールドが空の場合だけでなく、ラベルはいつでも表示する必要があります。 フローティングラベル(ラベルが編集時にフィールドの上に移動する場所)は、混乱を避けるために慎重に実装する必要があります。 プレースホルダーテキストは、単に短いヒントを提供するべきではなく、ラベルを完全に置き換える必要があります。 [必須[[インジケータ(アスタリスク)をスパースして一貫して使用してください。
視覚階層およびグループ化
セクションヘッダまたは背景シェーディングでグループ関連フィールド。一貫性のある間隔、フォントサイズ、およびアライメントを使用して予測可能なフローを作成します。最初に最も重要なフィールド(例えば、オプションの伝記の前に電子メール)を配置します。左右スクロールを防ぐためにiPhone上のシングルコラムレイアウトを使用してください。iPadでは、マルチコラムは、作業を徹底的にテストすることができます。
フォームデザインへのアクセシビリティ
フォームは、VoiceOver、スイッチコントロール、またはより大きいテキストサイズを使用する人々を含む、誰もが使える必要があります。アクセシビリティは、後続ではありません。それはユーザーフレンドリーな設計のコア部分です。
ダイナミックタイプとボイスオーバー
ユーザーの好みのテキストサイズで要素をスケールアップするように、ダイナミックタイプをサポート。 Auto Layout を使用して、長い文字列に対応し、トランケーションを回避します。 VoiceOver では、検証ステータスを含む各フィールドに有意なアクセシビリティラベルとヒントを設定しています。グループ関連の要素(ラベルや入力など)は、ナビゲーションが効率的です。
支援技術に関するエラー通知
バリデーションが失敗すると、アクセシビリティラベルを更新するか、 ]UIAccessibility.post(notification:.announcement、引数:...) を使用してエラーを話す。 フォーカスが投稿後の最初の無効フィールドに移動することを確認してください。そのため、VoiceOver ユーザーはすぐに問題を修正できます。 ]accessibilityInvalid エラーでフィールドをマークするトレイトを使用してください。
iOSアプリケーション用の検証戦略
検証は、収集したデータが処理される前に、期待されるフォーマットと制約を満たしていることを確認します。 適切に計画された検証戦略は、非包括的なエラー処理による即時フィードバックをバランスよくバランスをとります。
クライアント側検証とサーバー側
クライアント側の検証(アプリ内)は、即時応答を提供し、不要なネットワーク呼び出しを削減します。ただし、唯一の執行メカニズムである必要はありません。サーバー側の検証は、セキュリティとデータの完全性のために不可欠です。クライアント側の検証を使用して、UXを改善し、サーバー側の検証をAuthoritative gateとして使用します。
リアルタイム検証
リアルタイム検証では、入力をユーザータイプ(短いデバウンス後)またはフィールド出口の直後にチェックします。このアプローチは、ユーザーが移動する前に、ユーザーの間違いを正しく確認するのに役立ちます。例えば、ユーザーがフィールドを終了するとすぐに電子メールフォーマットを検証します。オーバーリーに攻撃しないでください。ユーザーがまだ入力している間エラーを表示しないでください。.onEditingChangedまたはコンバインパブリッシャーが、バリデーションを遅らせるとの組み合わせを使用します。
オン・サブミットの検証
オン・サブミット検証は、ユーザーが送信ボタンをタップすると、すべてのフィールドを検証するフォールバックです。これにより、リアルタイムの検証がすべてのフィールドに実装されていない場合でも、完全性が保証されます。送信後、すべてのエラーを強調し、最初の無効フィールドをビューにスクロールします。 1つの失敗時に他のフィールドをクリアしないでください。
フィールドレベルとフォームレベルの検証
フィールドレベルの検証は、個々の制約(例、メール形式、非空)をチェックします。フォームレベルの検証は、クロスフィールドの依存関係(例、パスワードの確認マッチ、開始日後の終了日)をチェックします。包括的なデータ整合性のために、両方の実装。 検証ライブラリまたは論理DRYを維持する中央バリデータ機能を使用してください。
検証フィードバックに最適なプラクティス
エラーを提示する方法は、ユーザーの信頼と意思に大きく影響を及ぼし、フォームを完了します。 明確で実用的なフィードバックのために、これらのガイドラインに従ってください。
即時エラー表示
エラーアイコン(赤丸の除外マークのような)を検証直後にフィールド内または横に表示します。フィールドラベルの下や専用のエラーラベル内など、エラーメッセージが一貫した場所に配置します。エラーメッセージは具体的で有用です。「名前@example.comのような有効なメールアドレスを入力してください」は「無効フィールド」ではありません。
記述的なエラーメッセージ
問題と修正方法を説明するプレーン言語でエラーメッセージを書きます。例えば、「パスワードは1つの大文字で少なくとも8文字でなければなりません。」というような技術的な用語を避けます。同じフィールドの複数のエラーをグループでグループ化(例えば、「このフィールドは空にして有効なメールを含まなければなりません。」)が、最も関連性を示すだけです。
ビジュアルキュー(カラー、アイコン、ボーダー)
赤い境界線や背景を使用して、フィールドをエラーで強調します。ただし、色だけに依存しない、colorblind ユーザーのアイコン(警告三角形のような)を追加します。ユーザーが入力を補正するとき、境界をデフォルトに戻すのはスムーズにです。アニメーションは(例えば、0.2秒リース)微妙でなければなりません。
有効なまで提出を無効にする
送信ボタンを無効化すると、すべてのフィールドが有効になるまで、ユーザーが不完全なフォームを提出しようとするのを防ぐことができます。 このアプローチは、リアルタイムの検証が有効になっているときに最適に機能します。そのため、ユーザーはボタンが徐々に有効になっています。 無効にすると、ツールチップまたはアクセシビリティのヒントが、理由(例えば、「送信するすべての必要なフィールドを完了」)を説明しています。 代替手段は、アプリのコンテキストに基づいて、送信およびすべてのエラーを表示できるようにすることです。
高度な検討
エッジケース(ダイナミックフィールド、条件検証)の処理
一部のフォームでは、以前の回答に基づいて表示されているダイナミックフィールド(例えば、ユーザーが米国を選択した場合のみの状態ピッカーを示す)が必要です。 条件付き検証を慎重に実施してください。 未積フィールドは検証に失敗するべきではありません。 [removeFromSuperview[]または隠されている状態を使用し、 フライで検証規則を更新します。 すべての透過率をテストすることは重要です。
パフォーマンスとデバニング
リアルタイム検証は、すべてのキーストロークで実行すると、パフォーマンスの問題を引き起こす可能性があります。 フィールドが最初に応答を辞退したときに、デバウンス(例えば、300ms遅延)またはのみ検証を使用してください。 出版社や委任者を組み合わせると、イベントをフィルタリングできます。 また、メインスレッドの過剰な正規表現操作を避け、必要に応じてバックグラウンドキューで検証します。
検証におけるセキュリティとプライバシー
検証中に機密データを保存またはログを記録しないでください。パスワードの安全なテキストエントリを使用します。クレジットカード番号の有効化には、Lhnアルゴリズムのクライアント側を使用していませんが、完全な数字を非必要に送信しません。Appleのデータ処理ガイドラインに従い、必要に応じてパスワードのコピー/ペーストを防止するために、]UITextField[]を使用します。
コンテンツ
iOSアプリで有効な検証でユーザーフレンドリーなフォームを設計することは、ユーザーのニーズ、技術的制約、およびプラットフォームの基準のバランスをとっている継続的なプロセスです。 シンプルさ、明確なフィードバック、アクセシビリティのUX原則に従うことで、不満を減らし、完了率を高めるフォームを作成します。 検証は、ユーザーの時間を即座に記述し、尊重する必要があります。 リアルタイムチェック、オン・サブ・サブ・バリデーション、クロス・フィールドを組み込むことで、ユーザーの質問に対する適切な質問を解決しなくても、ユーザーに適切な質問をすることができます。 特定の質問をするには、適切な質問をしてください。
より深いガイダンスについては、 ]] の Forms[ の Apple のヒューマン インターフェイス ガイドラインを参照してください。 ]]] の勉強 の ] などの検証ライブラリを探索し、 ] または RxSwift]] を再アクティブにアプローチします。 常にユーザー のクラスターとセキュリティ の形式を優先します。 と リストアレイダーは、または [FLT: のクラスター の形式を識別します。