gpt4 book ai didi

通过 uiviewcontroller 显示的自定义 View 的 iOS 旁白

转载 作者:行者123 更新时间:2023-11-29 05:31:10 39 4
gpt4 key购买 nike

我有一个 UIViewController 让我们称之为 MainViewController,一个子 Controller 实例(UITableViewController 类型的 ChildViewController)被添加到 MainViewControllerChildViewController 的可访问性已设置,并且画外音也可以正常工作。

MainViewController 有一个工具栏按钮,点击后将显示自定义 View ,如下所示

//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
})
}

通过这样做,画外音从未用于到达(读取)自定义 View 元素。经过一番研究后,在工具栏按钮点击处理程序中的 MainViewController 中添加了以下行

UIAccessibility.post(notification: .screenChanged, argument: actionView)

此后,画外音开始读取自定义 View 中的元素,并且可以使用左右交换在元素之间导航。

但是问题是,当我点击 CustomView 中的任何元素时,它不会被选择和读取,而是在该点击位置选择并读取位于后台的 ChildViewController 的元素.

在交换时,按预期工作

On Swap, works as expected

问题 - 当点击关闭按钮时,位于后台的 subview Controller 中的元素被选中

Issue - when tapped on close button, the element in the childview controller which is in the background is selected

注意:CustomView有一个具有半透明背景颜色的 subview

提前致谢

最佳答案

自定义 View 是一个模态视图,显示在当前 uiviewcontroller 之上。

已将以下行添加到 CustomView 中,解决了问题。

self.accessibilityViewIsModal = true

这里 VoiceOver 会忽略 View 中与接收者同级的元素。

Refer Apple's doc for more details

关于通过 uiviewcontroller 显示的自定义 View 的 iOS 旁白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552123/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com