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

Xcode - disable accessibility on all elements

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

我一直在尝试通过将 self.view 传递给以下方法来实现此目的:

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

应该注意的是,出于某种原因,最初编写此代码的人决定将 UIView 堆叠在彼此之上,因此仍有元素出现在背景中。

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

从您的评论来看,您似乎在试图阻止 VoiceOver 用户与被遮挡的视图(例如,被模态视图阻挡的视图)进行交互。尝试在最顶层的视图上将 accessibilityViewIsModal 设置为 YES,以指示可访问性客户端忽略与该元素的同级元素的交互。

您可以禁用 storyboard/xib 个文件中每个元素的可访问性。

UIAccessibility in interface

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

view.IsAccessibilityElement = YES;

这可以帮助你,但我认为在你的情况下,上面的答案更好。