iOS 在 uiviewcontroller 上显示的自定义视图的画外音
iOS voiceover for custom view displayed over uiviewcontroller
我有一个 UIViewController 让我们称它为 MainViewController,一个子控制器实例(UITableViewController 类型的 ChildViewController)被添加到 MainViewController
ChildViewController 的可访问性已设置,画外音也可以正常工作。
MainViewController 有一个工具栏按钮,点击后会显示一个自定义视图,如下所示
//CustomView class
func show() {
UIView.animate(withDuration:0.5, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 5, options: .curveEaseInOut, animations: {
self.disabledLayer.backgroundColor = UIColor.init(white: 0, alpha: 0.55)
self.transform = .identity
}, completion: {
(value: Bool) in
self.accessibilityElements = [titleLabel, closeButton] // titleLabel, closeButton are added dynamically to the view and are of type UILabel and UIButton respectively
})
}
通过这样做,画外音从未用于到达(读取)自定义视图元素。经过一些研究后,在工具栏按钮点击处理程序中向 MainViewController 添加了以下行
UIAccessibility.post(notification: .screenChanged, argument: actionView)
在此之后画外音开始读取自定义视图中的元素,并且可以使用左右交换在元素中导航。
但是问题是当我点击 CustomView 中的任何元素时,它没有被选中和读取,而是选中了背景中的 ChildViewController 的元素并且在那个点击位置阅读。
在 Swap 上,按预期工作
问题 - 当点击关闭按钮时,子视图控制器中处于后台的元素被选中
注意:CustomView 有一个具有半透明背景颜色的子视图
提前致谢
自定义视图是模态视图,显示在当前uiviewcontroller之上。
已将以下行添加到解决了问题的 CustomView。
self.accessibilityViewIsModal = true
此处 VoiceOver 会忽略视图中与接收者同级的元素。
我有一个 UIViewController 让我们称它为 MainViewController,一个子控制器实例(UITableViewController 类型的 ChildViewController)被添加到 MainViewController ChildViewController 的可访问性已设置,画外音也可以正常工作。
MainViewController 有一个工具栏按钮,点击后会显示一个自定义视图,如下所示
//CustomView class
func show() {
UIView.animate(withDuration:0.5, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 5, options: .curveEaseInOut, animations: {
self.disabledLayer.backgroundColor = UIColor.init(white: 0, alpha: 0.55)
self.transform = .identity
}, completion: {
(value: Bool) in
self.accessibilityElements = [titleLabel, closeButton] // titleLabel, closeButton are added dynamically to the view and are of type UILabel and UIButton respectively
})
}
通过这样做,画外音从未用于到达(读取)自定义视图元素。经过一些研究后,在工具栏按钮点击处理程序中向 MainViewController 添加了以下行
UIAccessibility.post(notification: .screenChanged, argument: actionView)
在此之后画外音开始读取自定义视图中的元素,并且可以使用左右交换在元素中导航。
但是问题是当我点击 CustomView 中的任何元素时,它没有被选中和读取,而是选中了背景中的 ChildViewController 的元素并且在那个点击位置阅读。
在 Swap 上,按预期工作
问题 - 当点击关闭按钮时,子视图控制器中处于后台的元素被选中
注意:CustomView 有一个具有半透明背景颜色的子视图
提前致谢
自定义视图是模态视图,显示在当前uiviewcontroller之上。
已将以下行添加到解决了问题的 CustomView。
self.accessibilityViewIsModal = true
此处 VoiceOver 会忽略视图中与接收者同级的元素。