1

我有 UIView,它可以包含两个视图之一。当我 removeFromSuperview 第一个视图和 addSubview 第二个视图时,我仍然可以听到隐藏视图的 accessibiliyLabel。只有在 1-2 秒内,我才能听到正确的 accessibiilityLabel。我看到,当视图的隐藏状态发生变化时,可访问性可能会受到挫折,但仍然会说出隐藏视图,并且不注意可见视图,这是很常见的情况。此外,如果在 UITableViewCell 中 UIButton 被隐藏,然后隐藏状态更改为 NO,VoiceOver 会忽略它,就像它仍然隐藏一样。只有手动实现单元的 UIAccessibilityContainer 协议才能解决上述问题

没有通知可以解决这个问题。即使玩accessibilityElementsHidden 也无济于事。这几天为此苦苦挣扎

请你能推荐一下有什么方法可以说视图层次结构改变的可访问性吗

4

2 回答 2

2

我自己用第三方侧菜单库遇到了这个问题,不得不使用accessibilityElementsHidden 来修复它。我首先尝试利用accessibilityViewIsModal 属性,但这仅适用于兄弟视图。

#pragma mark - IIViewDeckControllerDelegate

- (void)viewDeckController:(IIViewDeckController *)viewDeckController didOpenViewSide:(IIViewDeckSide)viewDeckSide animated:(BOOL)animated
{
    if (viewDeckSide == IIViewDeckLeftSide) {
        [self.topViewController.view endEditing:YES];
        self.viewDeckController.leftController.view.accessibilityElementsHidden = NO;
    }
}

- (void)viewDeckController:(IIViewDeckController *)viewDeckController didCloseViewSide:(IIViewDeckSide)viewDeckSide animated:(BOOL)animated
{
    self.viewDeckController.leftController.view.accessibilityElementsHidden = YES;
}
于 2013-07-03T22:19:36.127 回答
2

您可以发布 UIAccessibilityScreenChangedNotification 或 UIAccessibilityLayoutChanged 以提醒 UIAccessibility 视图已更改。由于您没有发布任何代码,我只能给您一个通用示例,例如:

UIAccessibilityPostnotification(UIAccessibilityLayoutChanged,accessibilityelement)

...其中“可访问性元素”将是 VoiceOver 下一个切换到的按钮或文本字段或其他可访问性元素。

参考:UIKIt 参考

于 2013-06-02T00:14:03.163 回答