VoiceOver忽略可见视图,并说出隐藏视图的可访问性标签

时间:2013-04-12 09:47:17

标签: iphone ios accessibility voiceover uiaccessibility

我有UIView,可以包含两个视图中的一个。当我删除SuperSuperview第一个视图和addSubview第二个视图时,我仍然可以听到accessibiliyLabel的隐藏视图。只有1-2秒我才能听到正确的accessibiilityLabel。 我看到,当隐藏的视图状态发生变化,可访问性可能会受挫并且仍然会隐藏视图并且不会注意到可见视图时,这是常见的情况。 此外,如果隐藏了UITableViewCell UIButton,然后隐藏状态更改为NO,则VoiceOver会忽略它,因为它仍然是隐藏的。只有手动实现UIAccessibilityContainer协议才能解决问题所解决的问题

否通知可以解决此问题。即使玩accessibilityElementsHidden也无济于事。在几天内苦苦挣扎

请问您能否建议有什么方法可以说可以改变视图的可访问性

2 个答案:

答案 0 :(得分:2)

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

UIAccessibilityPostnotification(UIAccessibilityLayoutChanged,accessibilityelement)

...其中“accessibilityelement”将是VoiceOver切换到下一个按钮或文本字段或其他辅助功能元素。

参考:UIKIt Reference

答案 1 :(得分: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;
}