如何设置辅助功能容器以便手势正常工作?
How to setup accessibility containers so that gestures work properly?
我有一个具有这种布局的视图控制器(注意黄色和 table 视图是兄弟):
我希望黄色视图充当容器,所以我在 viewDidLoad
中这样做:
yellowView.isAccessibilityElement = true
view.accessibilityElements = [yellowView!, tableView!]
在画外音时,我 select 来自辅助功能转子的“容器”,并希望能够上下滑动以从黄色视图移动到 table 视图并再次返回:
黄色(向下滑动)→ TableView(向下滑动)→ Tabbar(向上滑动)→ tableView(向上滑动)→ 黄色
然而,情况并非如此 - tableView
获得焦点后,向上滑动不会将焦点移动到黄色视图,它只是停在那里。向下滑动,移动到标签栏 - 似乎我的自定义视图被忽略为容器。
我尝试了多种添加超级视图和设置 isAccessibilityElement = false
的组合,但似乎没有任何效果。
有人知道怎么解决吗?
it seems that my custom view is ignored as container.
显然,只有原生元素可以被识别为转子的容器。
我尝试在定义为其容器的视图中创建一个 UIAccessibilityElement
,但没有结果。
我从来没有使用容器项目的转子,但这个问题引起了我的好奇心。
我调查了这个问题,发现了一个 interesting answer,它突出显示了所有本机容器的相同 a11y 特征值……至少由 VoiceOver 分析的那些。
覆盖特定容器的特征值,例如:
override var accessibilityTraits: UIAccessibilityTraits {
get { return UIAccessibilityTraits(rawValue: 0x200000000000) }
set { }
}
这是一个解决方法,因为自定义容器似乎没有做任何其他事情,但我不喜欢使用可能会更改或可能不会使用的原始值未来版本。
无论如何,根据这个基本原理,您现在可以设置辅助功能容器,以便手势与 VoiceOver 转子一起正常工作。
您是否在 yellowView
上设置了 accessibilityLabel
或尝试更改 accessibilityContainerType = .semantic
?
我认为 VoiceOver 没有找到 yellowView
,因为转子正在寻找 UIAccessibilityContainer
,但是 UIView
的默认容器类型是 .none
。但是,UITableView
的默认容器类型为 .semantic
。
我有一个具有这种布局的视图控制器(注意黄色和 table 视图是兄弟):
我希望黄色视图充当容器,所以我在 viewDidLoad
中这样做:
yellowView.isAccessibilityElement = true
view.accessibilityElements = [yellowView!, tableView!]
在画外音时,我 select 来自辅助功能转子的“容器”,并希望能够上下滑动以从黄色视图移动到 table 视图并再次返回:
黄色(向下滑动)→ TableView(向下滑动)→ Tabbar(向上滑动)→ tableView(向上滑动)→ 黄色
然而,情况并非如此 - tableView
获得焦点后,向上滑动不会将焦点移动到黄色视图,它只是停在那里。向下滑动,移动到标签栏 - 似乎我的自定义视图被忽略为容器。
我尝试了多种添加超级视图和设置 isAccessibilityElement = false
的组合,但似乎没有任何效果。
有人知道怎么解决吗?
it seems that my custom view is ignored as container.
显然,只有原生元素可以被识别为转子的容器。
我尝试在定义为其容器的视图中创建一个 UIAccessibilityElement
,但没有结果。
我从来没有使用容器项目的转子,但这个问题引起了我的好奇心。
我调查了这个问题,发现了一个 interesting answer,它突出显示了所有本机容器的相同 a11y 特征值……至少由 VoiceOver 分析的那些。
覆盖特定容器的特征值,例如:
override var accessibilityTraits: UIAccessibilityTraits {
get { return UIAccessibilityTraits(rawValue: 0x200000000000) }
set { }
}
这是一个解决方法,因为自定义容器似乎没有做任何其他事情,但我不喜欢使用可能会更改或可能不会使用的原始值未来版本。
无论如何,根据这个基本原理,您现在可以设置辅助功能容器,以便手势与 VoiceOver 转子一起正常工作。
您是否在 yellowView
上设置了 accessibilityLabel
或尝试更改 accessibilityContainerType = .semantic
?
我认为 VoiceOver 没有找到 yellowView
,因为转子正在寻找 UIAccessibilityContainer
,但是 UIView
的默认容器类型是 .none
。但是,UITableView
的默认容器类型为 .semantic
。