RSS Use Your Loaf - iOS 開発ニュース & ヒント フォロー SwiftUIのアクセシビリティにおける言語設定 SwiftUIで言語学習アプリを作成する際、テキストがデバイスのロケールとは異なる言語の場合、VoiceOverがテキストを正しく発音しないことがあります。これを修正するには、VoiceOverで使用されるアクセシビリティ言語を変更する必要があります。UIKitでは、テキストラベルのaccessibilityLanguageプロパティを設定できますが、これはSwiftUIでは利用できません。提案された解決策の一つは、accessibilitySpeechLanguage属性を持つAttributedStringを使用することですが、これは機能しません。別の解決策は、environmentモディファイアを使用して、各ビューのロケール環境を変更することです。ただし、これはTextビューのverbatimイニシャライザを使用する場合にのみ機能します。デフォルトではテキストをローカライズされた文字列キーとして扱うためです。この解決策はTextビューには有効ですが、Labelなどのビューにはより長い形式が必要です。ロケールをラベルまたは子テキストビューに適用できますが、アイコン付きのLabelを使用する場合、ロケールはButtonに適用された場合にのみ有効になります。つまり、VoiceOverは「button」を修正されたロケールで発音しますが、メインテキストは正しく発音されます。全体として、SwiftUIでVoiceOverで使用されるアクセシビリティ言語を変更するには、各ビューのロケール環境を変更することが解決策となります。 SwiftUI Accessibility Language useyourloaf.com
accessibilityLanguageプロパティを設定できますが、これはSwiftUIでは利用できません。提案された解決策の一つは、accessibilitySpeechLanguage属性を持つAttributedStringを使用することですが、これは機能しません。別の解決策は、environmentモディファイアを使用して、各ビューのロケール環境を変更することです。ただし、これはTextビューのverbatimイニシャライザを使用する場合にのみ機能します。デフォルトではテキストをローカライズされた文字列キーとして扱うためです。この解決策はTextビューには有効ですが、Labelなどのビューにはより長い形式が必要です。ロケールをラベルまたは子テキストビューに適用できますが、アイコン付きのLabelを使用する場合、ロケールはButtonに適用された場合にのみ有効になります。つまり、VoiceOverは「button」を修正されたロケールで発音しますが、メインテキストは正しく発音されます。全体として、SwiftUIでVoiceOverで使用されるアクセシビリティ言語を変更するには、各ビューのロケール環境を変更することが解決策となります。