带有UIPageControl和VoiceOver的UIScrollView

问题描述

我有一个带有UIPageControl的UIScrollView,该页面有2页,当画外音开始读取时,它似乎也读取了第二页的元素。我猜是因为加载了这些元素,所以它不知道它们是不可见的。

作为一种解决方案,我尝试为未显示的第二页手动设置accessibilityElementsHidden,但这不起作用,这是因为它即使在更改页面后也永远不会读取第二页元素。

@IBOutlet private var scrollView: UIScrollView!
@IBOutlet private var pageControl: UIPageControl!

// child page view's get added to this array when page initialised
private var childPageViews = [UIView]()  

override func viewDidLoad() {
    super.viewDidLoad()

    updateChildPageViewsAccessibilityHidden(currentPageIndex: pageControl.currentPage)
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    
    pageControl.currentPage = scrollView.currentPage()        

    updateChildPageViewsAccessibilityHidden(currentPageIndex: pageControl.currentPage)
}

private func updateChildPageViewsAccessibilityHidden(currentPageIndex: Int) {

    childPageViews.forEach {
         guard let pageIndex = views.firstIndex(of: $0) else { return }
         let isPageHidden = currentPageIndex != pageIndex
         $0.accessibilityElementsHidden = isPageHidden
    }
}

我明显缺少什么吗?还是有人可以提供修复建议?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...