はじめに
若干センセーショナルなタイトルになりましたが、VoiceOver時に問題になりそうな挙動をまとめてます。
ニュースアプリ
ニュースのタイトルだけはみられるけど、
記事に関してはユーザーにログインをしてもらう、というアプリです。
当然アプリ開発者としては「ログイン」をしなければ記事を見られないようにする、
という意味合いで灰色のViewを置いて記事を覆っているのですが、
この場合VoiceOverをOnにすると、
普通に記事にフォーカスが当たり、ログインせずにニュースの内容が読み上げられます。
この場合、ログインの有無によって記事のisAccessibilityElement
の状態を切り替えるべきでしょう。
課金型アプリ
「次のページ」ボタンを押すと次のページへ進めるのですが、次のページへ進むにはポイントが必要で、
ユーザーに購入を促している状態ですね。
ポイントがない場合は画面全体をViewでガードして「次のボタン」を押せなくしてポイント購入を待っている状態です。
VoiceOverをOnにすると「次のページ」ボタンにフォーカスが当たります。
ただ、この例のように、ボタン上にViewがオーバーレイしている場合、
フォーカスを当てた状態でダブルタップしても、ボタンの処理は起こりません。
なので、課金処理をスルーして次のページに遷移してしまうことは起こりません。
(厳密にいうと、User Interaction Enabledの状態によってボタンの処理が起こるかが決まります)
ただVoiceOverユーザーにとっては、「次のページ」ボタンにフォーカスをしただけでは何故押せないか分からないので、
「次のボタン」のaccessibilityHint
に「ポイントの購入が必要です」などの情報付与が必要でしょう。
まとめ
ということで、Viewをオーバーレイして見えなくしても、タップさせなくしても、オブジェクトがあることはVoiceOverで分かります。
一度開発中のアプリをvoiceOver ONで動作させてみることをお勧めします。