打开自定义的UITableViewCell时,显示/隐藏溢出菜单中的辅助function元素

我在自定义的UITableViewCell类中实现可访问性。 我有一个相当简单的溢出菜单,里面有几个button,直到按下一个省略号button,滑动打开并closures溢出。

在我的单元格的初始化程序中,我将overflowContaineraccessibilityElementsHidden设置为YES 。 这似乎工作,当滚动使用VoiceOver,这些意见被跳过。

然后,当打开单元格时,在UIViewanimation的完成处理程序中,我将同一个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

无论如何,您可能仍然需要触发布局更改通知。