iOS で VoiceOver を使用すると、セグメント化されたコントローラーのようなものを見ると、VoiceOver はセグメントとそのインデックス (「選択済み: 何か: 2/4」) を読み取ります。
いくつかのボタンを保持するカスタム UIView コンテナーがあり、コンテナー内のボタンをスワイプするときの「2 of 4」の動作を再現したいと考えています。
可能であれば、カスタム UIView サブクラスを作成せずにこれを行うのが理想的です。それは達成できますか?
iOS で VoiceOver を使用すると、セグメント化されたコントローラーのようなものを見ると、VoiceOver はセグメントとそのインデックス (「選択済み: 何か: 2/4」) を読み取ります。
いくつかのボタンを保持するカスタム UIView コンテナーがあり、コンテナー内のボタンをスワイプするときの「2 of 4」の動作を再現したいと考えています。
可能であれば、カスタム UIView サブクラスを作成せずにこれを行うのが理想的です。それは達成できますか?
これは、次のいずれかを設定することで実現できますaccessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait
。
問題のボタンのテキストが「Blue OK」で、読み上げたい追加テキストが「2 out of 4」であると仮定します。
「ブルーOK」 - ショートポーズ - 「ボタン」
accessibilityLabel
を "2 out of 4" に設定すると、次のようになります。"2 out of 4" - SHORT PAUSE - "Button"
accessibilityValue
を "2 out of 4" に設定すると、次のようになります。「ブルー OK」 - ショートポーズ - 「2 アウト オブ 4」 - ショートポーズ - 「ボタン」
accessibilityHint
を "2 out of 4" に設定すると、次のようになります。「青 OK」 - 短い一時停止 - 「ボタン」 - 長い一時停止 - 「4 のうち 2」
この場合、「2 out of 4」は 2 本の指で下にスワイプしても読み取れないことに注意してください。
オブジェクトにTrait を設定してbutton.selected
フラグが設定されている場合、VoiceOver はオブジェクトが選択されていることを通知します。YES
選択したプロパティをサポートしていないオブジェクトに明示的に追加したい場合は、自分でトレイトを追加できます。
//can concatenate multiples ones like so UIAccessibilityTraitButton | UIAccessibilityTraitSelected
mybutton.accessibilityTraits = UIAccessibilityTraitSelected;
この特性は、上記の例で「ボタン」が読み取られるのと同じ場所で読み取られます。
「青 OK」 - 短い一時停止 - 「ボタン、選択済み」
文言の順序を変更したい場合は、accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait
探している正確な文言が得られるまで、 の値を組み合わせて一致させる必要があります。
ボタン インデックスをアイテムの に追加しますaccessibilityLabel
。ここには魔法はありません。このコンテキストは、Switch Control を含む他のアクセシビリティ クライアントのユーザーにとって必ずしも役立つとは限りませんが、UIAccessibility
プロパティを変更する以外に、VoiceOver の内部動作を再現する方法はありません。