2012-01-13 11 views
5

ボタン、ラベルなどのコントロールを含むUIViewがあります。このビューを別のビュー(addSubviewを使用)にオーバーレイします。ユーザーがVoiceOverをオンにしている場合、左右にスワイプしてコントロールを選択できます。しかし、コントロールが見えなくなるようにビューを隠すと、ユーザーはスワイプして選択することができます(実際には機能しません)。これは盲目のユーザーにとって非常に混乱しているので、私はこれが起きないようにしたいと思います。私も(removeFromSuperviewを使用して)コントロールが含まれているビューを削除しようとしましたが、ユーザーはスワイプして選択することができますが、それらを強調表示する小さなボックスはもはや正しい位置にありません。それはVoiceOverのようなもので、これらのコントロールがそこにあったことを記憶しており、永遠にそれを覚えています。非表示にするとVoiceOverコントロールが選択可能

プロパティ 'accessibilityElementsHidden'が見つかりました。また、非表示になっているコントロールを含むビューでYESに設定しようとしましたが、どちらも機能しないようです。

これはVoiceOverのバグですか、何か不足していますか?回避策はありますか?

ありがとうございました。

+0

私は正反対の問題があります。オーバレイビュー(ボタンを含む)が透明(alpha = 0.0)の場合、そのサブビュー(ボタンなど)はVoiceOverによって検出されません。私のケースでは、オーバレイが隠されていても(VoiceOverを介して)これらのコントロールをアクセス可能にしたいのですが、私はできません! –

答えて

10

「記憶された」部分は、サブビューを削除した後にUIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)のようなことをしていないと思います。

+2

はい、それはまさに私が行方不明だったものです。どうもありがとうございました!ところで、私はアップル開発フォーラムでこれと全く同じ質問をして、何の反応も受けなかった。私はいつもstackoverflowの上にもっと知り合いの人を見つけるようだ。 –

+0

私はあまりにもチャンスの問題、そこにも物事に答えるしようとします。ところで、iOS 5が必要な場合は、LifeO * LOT *を簡単にするVoiceOverモーダルビューを使用することができます。 –

+0

チップをありがとう。私はそれを見ましたが、あなたがインストールできる最大バージョンとして4.2を持っているように見えるGen 2/3 iPodをサポートできるようにしたいと思います(私はいつもOSバージョンをチェックして、iOS 5コールに応じて)。 –

7

「accessibilityElementsHidden」のドキュメントの状態:

ブール値をアクセシビリティ要素 このアクセシビリティ要素内に含まれるが隠されているかどうかを示します。 ..... このプロパティのデフォルト値はNOです。このプロパティを に使用すると、新しいビューの到着が表示されます。この の場合、隠しビューは画面上に表示されたままになることがありますが、ユーザーの操作のフォーカスは ではありません。

また、このプロパティを使用して、 VoiceOverユーザーに通知する必要のない一時的な表示を非表示にすることもできます。たとえば、VoiceOverでは がデバイス上の音量を調整するときに表示される半透明のビューを説明する必要がありません。 であるため、VoiceOverは を説明する必要はありません。

このように、VoiceOverでサブビューを無視するには、親ビューでこれを「はい」に設定します。

+0

お返事ありがとうございます。私は前にミスタイプしていました。私はそれをYESに設定しました。問題は、ウィンドウを削除した後に私がUIAccessibilityPostNotificationを呼び出していないことが原因です。 –

関連する問題