私のアプリでは、私はUITableView
の非同期データ読み込みを持っています。ビューコントローラがロードされると、私はモーダルアクティビティスピナーを表示し、HTTPリクエストを開始します。それが完了したら私はスピナーを隠し、テーブルビューでreloadData()
を実行します。また、データがまだ準備されていないときに最初に空のリストを確認するために、行番号としてresponse?.count ?? 0
を返します。VoiceOverと非同期UITableView
これは魅力的ですが、私はVoiceOverに問題があります:View Controllerを開くとき、VoiceOverがテーブルに入り、「空のリスト」と表示されます。データがロードされると、テーブルの最後の要素に移動します。
この動作はあまり最適ではありません:VoiceOverが空のときにVoiceOverにテーブルをフォーカスしないようにします(ロード時にサウンドが既に存在するため、モーダルスピナーにフォーカスする必要はありません)それがロードされたとき。
どうすればよいですか?
問題の内容がすぐにわかりません。 VoiceOVerのフォーカスコントロール、またはViewControllerのロードで何が起こるか。 VoiceOverから目に見えるビューを隠すべきではありません。そこにテーブルがあり、それが空であるという事実は重要です。さて、これはおそらく、これはViewControllerがロードする2番目のものを共有するべきではなく、動的なコンテンツの懸念があるということです。あなたは最初に焦点を当ててもっと賢明な何かをすることができるかもしれません...しかしあなたの説明を与えられたあなたのレイアウトとあなたの実際の問題を理解することは難しいです...写真? – ChrisCM
これは、完全なUITableViewを持つ空のViewControllerです。それがコントローラ内の唯一のビューであるため、読み込み中に空のリストがあると言っても意味がありません。アプリケーション内のどこでも再生できる特定の読み込み音があります。 VoiceOverは画面に表示される内容を説明していますが、読み込み中に空のリストがありませんということを理解しています。 – natinusala
そこにリストがあれば、アクセス可能でなければなりません。それが関連していない場合、なぜスクリーンでも???で始まるのですか?あなたが "経験を汚染しない"ようにしたいのであれば、そこにデータがあるまで誰もからリストを隠す。汚染された経験が何であるか知りたいですか?部分的に目に見えるユーザーは、ViewControllerのビューを「見て」、より多くの情報を求めて、ビューに指を入れて役に立つフィードバックを期待していますが、VoiceOverからそのビューを非表示にしています。それは汚染された経験です。 – ChrisCM