アクセサビリティ対応。先日、ユーザさんにフィードバックを頂いて、「う、ごめんなさい」と思いつつ具体的に調べてみた。ある程度デフォルトで組み込まれているので、意識せずアプリを作成していても、VoiceOverが動作する。良い意味でも悪い意味でも、iOSアプリはアクセサビリティ対応が標準という位置づけ。そのため、知らずに恥ずかしい状態でアプリをリリースしている可能性がある。日本語のドキュメントがある。プログラミングガイドとなっているが、どんなラベル、ヒントなどを入れると良いのか?という記述もあり、プログラマー以外でもとても参考になると思う。)基本的なことは、そのガイドを理解できるので、ここでは、実際に対応を試してみて、気がついたところを書いてみる。VoiceOver対応のコストVoiceOver対応にかかる工数・コストは、一概にこれぐらいというのはない。UIデザインに依存していて、なにも対応しなくてOKな場合あるし、そもそもVoiceOverでは操作が無理という場合もある。アプリのUIを考える前に、VoiceOverについて理解しておくとGood。画像Onlyボタンラベル、ボタンはデフォルトでアクセサビリティがONになっていて、読み上げ対象になる。指定が無い場合は、表示されている文字が読み上げられるのだが、画像のみのボタンの場合は「画像のアセット名」が読み上げられてしまうようだ。これはなんとも恥ずかしい。適当に書いたコードを見られてしまったような恥ずかしさ。文字を入れておくようにしよう。Heading」と読み上げてくれる。ボタンかどうか?は操作する側にとっては大事な情報なはず。Traitsの設定はここをポチッと変えるだの簡単なものなので普段から意識して設定するのがいいと思う。段組みレイアウト読み上げの順番は、左上から右下になる。(コードでカスタマイズ可能)あ、右から読む言語だと逆かもですが。普通であれば、問題ないのですが、段組みレイアウトの場合は困ったことになる。....と読み上げてしまうことに。53分」という文字をViewのAccessibilityのLabelに設定する必要がある。Appleのカレンダーアプリでも、AccessibilityのLabelがカスタマイズされている様子。ボタン」と読み上げする。このようなレイアウトは、多くの場合カスタマイズが必要になりそう。単位で自動的にAccessibleになる。Labelに以下の文字が自動的に設定される。25m」カスタムCellの場合もOK。設定されていれば、Traitsが自動的にButtonになる。