UITableViewCell
カスタムクラスにアクセシビリティを実装しています。内部にいくつかのボタンがあるかなり単純なオーバーフロー メニューがあります。これらのボタンは、スライドして開いてオーバーフローを閉じる省略記号ボタンが押されるまで非表示になっています。
私のセルのイニシャライザaccessibilityElementsHidden
で、私のoverflowContainer
を に設定していYES
ます。VoiceOver を使用してスクロールすると、これらのビューはスキップされます。
次に、セルを開くときに、UIView
アニメーションの完了ハンドラーでaccessibilityElementsHidden
、同じoverflowContainer
ことを NO に設定します。これは効果がないようです。これらの要素はまだスキップされています。
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
を変更する前/後/変更したときにも投稿しようとしましaccessibilityElementsHidden
BOOL
たが、これも状況に影響を与えていないようです。
基本的に、特定の時点でaccessibilityElementsHidden
いくつかのインスタンスをオンにしたいと思います。UIView
誰かが私が間違っているかもしれないことを教えてもらえますか?
オーバーフローが開いたときに起動するコードは次のとおりです。
- (void)cellOverflowDidShow:(MyCell *)cell
{
self.overflowContainer.isAccessibilityElement = YES;
self.firstButton.isAccessibilityElement = YES;
self.secondButton.isAccessibilityElement = YES;
self.thirdButton.isAccessibilityElement = YES;
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.firstButton);
}
セルを閉じると、反対のことが発生します(すべてをに設定してNO
、通知を再度投稿します)。そして、セルを初期化するとき、私が設定したのは次のとおりです。
self.overflowContainer.isAccessibilityElement = NO;
なぜそれが機能しないのかまったくわかりません。私はすべてを100%正しく行っているようです。イニシャライザで行を設定しないと、すべてのボタンに (常に) アクセスできるように見えます。そのため、 itYES
またはの最初の呼び出しはNO
機能しているように見えますが、後続の呼び出しは無視されます。