我正在自定义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% 正确的。如果我没有在初始化程序中设置该行,则所有按钮似乎都可以访问(一直)。因此,似乎第一个调用,无论是YES
or NO
,都有效,但任何后续调用都将被忽略。