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;
这可以帮助你,但我认为在你的情况下,上面的答案更好。
我正在尝试禁用出现在我屏幕上的所有 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;
这可以帮助你,但我认为在你的情况下,上面的答案更好。