打开自定义的UITableViewCell时,显示/隐藏溢出菜单中的辅助function元素
我在自定义的UITableViewCell
类中实现可访问性。 我有一个相当简单的溢出菜单,里面有几个button,直到按下一个省略号button,滑动打开并closures溢出。
在我的单元格的初始化程序中,我将overflowContainer
的accessibilityElementsHidden
设置为YES
。 这似乎工作,当滚动使用VoiceOver,这些意见被跳过。
然后,当打开单元格时,在UIView
animation的完成处理程序中,我将同一个overflowContainer
相同的accessibilityElementsHidden
设置为NO。 这似乎没有任何影响,这些元素仍然跳过。
我也曾尝试在更改accessibilityElementsHidden
BOOL
之前/之后/更改accessibilityElementsHidden
BOOL
时发布UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
,但是这对此情况似乎也没有影响。
基本上我想切换一些UIView
实例在特定点的accessibilityElementsHidden
。 谁能让我知道我可能做错了什么?
这是我打开溢出时触发的代码:
- (void)cellOverflowDidShow:(MyCell *)cell { self.overflowContainer.isAccessibilityElement = YES; self.firstButton.isAccessibilityElement = YES; self.secondButton.isAccessibilityElement = YES; self.thirdButton.isAccessibilityElement = YES; UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.firstButton); }
closures单元格时,我将相反的方向(全部设置为NO
并再次发布通知)。 当初始化单元格时,我设定的是:
self.overflowContainer.isAccessibilityElement = NO;
绝对不知道为什么它不应该工作,看来我正在做的一切100%正确。 如果我没有在初始化程序中设置行,所有button都可以访问(始终)。 所以看起来,第一个电话,不pipeYES
还是NO
,都可以工作,但是随后的电话都会被忽略。
在可见状态下,您将溢出容器声明为可访问性元素。 因此,VoiceOver将允许用户将其聚焦而不是导航子元素。 将self.overflowContainer.isAccessibilityElement
设置为NO
并切换其子项firstButton,secondButton和thirdButton的可访问性,而不是切换是否为可访问性元素。
设置子元素可accessibilityElementsHidden
性的简写为accessibilityElementsHidden
。 尝试设置self.overflowContainer.accessibilityElementsHidden
当视图出现时为NO
,当它消失时为YES
。
无论如何,您可能仍然需要触发布局更改通知。