LoginSignup
5
1

More than 5 years have passed since last update.

VoiceOverで突く脆弱性

Posted at

はじめに

若干センセーショナルなタイトルになりましたが、VoiceOver時に問題になりそうな挙動をまとめてます。

ニュースアプリ

例えばこんなニュースアプリがあるとします。
IMG_3147.PNG

ニュースのタイトルだけはみられるけど、
記事に関してはユーザーにログインをしてもらう、というアプリです。

当然アプリ開発者としては「ログイン」をしなければ記事を見られないようにする、
という意味合いで灰色のViewを置いて記事を覆っているのですが、
この場合VoiceOverをOnにすると、

IMG_3146.PNG
普通に記事にフォーカスが当たり、ログインせずにニュースの内容が読み上げられます。

この場合、ログインの有無によって記事のisAccessibilityElementの状態を切り替えるべきでしょう。

課金型アプリ

例えばこんな漫画アプリがあるとします。
IMG_3150.PNG

「次のページ」ボタンを押すと次のページへ進めるのですが、次のページへ進むにはポイントが必要で、
ユーザーに購入を促している状態ですね。
ポイントがない場合は画面全体をViewでガードして「次のボタン」を押せなくしてポイント購入を待っている状態です。

IMG_3151.PNG
VoiceOverをOnにすると「次のページ」ボタンにフォーカスが当たります。

ただ、この例のように、ボタン上にViewがオーバーレイしている場合、
フォーカスを当てた状態でダブルタップしても、ボタンの処理は起こりません。
なので、課金処理をスルーして次のページに遷移してしまうことは起こりません。
(厳密にいうと、User Interaction Enabledの状態によってボタンの処理が起こるかが決まります)

ただVoiceOverユーザーにとっては、「次のページ」ボタンにフォーカスをしただけでは何故押せないか分からないので、
「次のボタン」のaccessibilityHintに「ポイントの購入が必要です」などの情報付与が必要でしょう。

まとめ

ということで、Viewをオーバーレイして見えなくしても、タップさせなくしても、オブジェクトがあることはVoiceOverで分かります。
一度開発中のアプリをvoiceOver ONで動作させてみることをお勧めします。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1