Xcode - 禁用所有元素的可访问性

时间:2015-04-14 00:03:22

标签: ios objective-c uiaccessibility

我正在尝试禁用屏幕上显示的所有UI元素的辅助功能。之后我的计划是根据用户与应用的互动仅重新启用特定元素。

我一直试图通过将self.view传递给以下方法来实现这一目标:

- (void)disableSubviewsOfView:(UIView *)view
{
    NSArray *subviews = [view subviews];
    for (UIView *subview in subviews)
    {
        [subview setIsAccessibilityElement:NO];
        [self disableSubviewsOfView:subview];
    }
}

应该注意的是,由于某种原因,最初编写此代码的人决定将UIViews堆叠在一起,因此有些元素仍然出现在后台。

我想知道,有没有办法可以禁用所有元素的可访问性,不一定只是特定UIView中包含的元素?

2 个答案:

答案 0 :(得分:3)

从您的评论中,听起来您试图阻止VoiceOver用户与被遮挡的视图进行交互(例如,被模态视图阻止的视图)。尝试在最顶层视图上设置accessibilityViewIsModalYES,以指示辅助功能客户端忽略与该元素的兄弟姐妹的互动。

答案 1 :(得分:0)

您可以禁用情节提要/ xib文件中每个元素的可访问性。

UIAccessibility in interface

在编写代码之后,您可以启用所需的元素。

view.IsAccessibilityElement = YES;

这可以为您提供帮助,但是我认为在您的情况下,较高的答案会更好。