我正在尝试禁用屏幕上显示的所有UI元素的辅助功能。之后我的计划是根据用户与应用的互动仅重新启用特定元素。
我一直试图通过将self.view传递给以下方法来实现这一目标:
- (void)disableSubviewsOfView:(UIView *)view
{
NSArray *subviews = [view subviews];
for (UIView *subview in subviews)
{
[subview setIsAccessibilityElement:NO];
[self disableSubviewsOfView:subview];
}
}
应该注意的是,由于某种原因,最初编写此代码的人决定将UIViews堆叠在一起,因此有些元素仍然出现在后台。
我想知道,有没有办法可以禁用所有元素的可访问性,不一定只是特定UIView中包含的元素?
答案 0 :(得分:3)
从您的评论中,听起来您试图阻止VoiceOver用户与被遮挡的视图进行交互(例如,被模态视图阻止的视图)。尝试在最顶层视图上设置accessibilityViewIsModal
到YES
,以指示辅助功能客户端忽略与该元素的兄弟姐妹的互动。
答案 1 :(得分:0)
您可以禁用情节提要/ xib文件中每个元素的可访问性。
在编写代码之后,您可以启用所需的元素。
view.IsAccessibilityElement = YES;
这可以为您提供帮助,但是我认为在您的情况下,较高的答案会更好。