しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Swift】VoiceOver対応について調べてみる

VoiceOverについて調べてまとめてみました。

VoiceOver(ボイスオーバー)とは

VoiceOverとはiPhoneの視覚障害者の方向けの機能です。
画面を音声で読み上げることで画面が見えなくてもiPhoneを使うことができます。

f:id:llcc:20180821154214p:plain

VoiceOverをONにするとタップしたボタンやCellを読み上げてくれるようになります。
読み上げ中のオブジェクトは上画像のように黒く選択します。

VoiceOverの使い方

f:id:llcc:20180821154509p:plain

VoiceOverはiPhoneの設定アプリ → 一般 → アクセシビリティ → VoiceOverでONにすることができます。
ONにすると下のようにタップやスワイプといったジェスチャーの役目が大幅に変わります。

  • ボタンやCellをタップすると音声読み上げをする
  • 今までのシングルタップを実現したい時はボタンを2回タップ
  • スクロールしたい時は3本指でスクロール
  • 2本指でスクロールすると読み上げ可能なボタンやCellを順番に読み上げる

アプリのVoiceOver対応方法

f:id:llcc:20180821162342p:plain

VoiceOverですが、ボタンやラベルはデフォルトで読み上げ対象になっています。
上画像のようにラベル・ボタン・Viewだけを配置したアプリを作ったところ、ラベルとボタンはタップすると読み上げてくれるようになっていました。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var myView: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        myView.isAccessibilityElement = true
        myView.accessibilityLabel = "My view"
    }
}

UIViewも読み上げ対象にしたい場合はisAccessibilityElementをtrueにします。
読み上げ内容はaccessibilityLabelで設定をします。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var myButton: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        myButton.isAccessibilityElement = false
    }
}

逆に読み上げたくない場合はisAccessibilityElementをfalseにします。

iPhoneシミュレータでVoiceOverの検証をする方法

iPhoneシミュレータではVoiceOverをONにすることができません。
代わりにAccessibility Inspectorというツールを使います。

f:id:llcc:20180821162837p:plain

Accessibility InspectorはXcodeのメニューバーのXcode → Open Developer Toolから開きます。

f:id:llcc:20180821163126p:plain

シミュレータの画面をタップすることで、読み上げテキストの内容などを確認することができます。