首页 文章

VoiceOver不能在横向滚动到屏幕外的元素?

提问于
浏览
2

如何在UIScrollView中将VoiceOver滚动到屏幕外的元素 .

我有一个UIScrollView . 在这里面是一个包含许多子视图的UIView . 这些子视图中有标签 - 如下所示:

Scroll View
-> UIView
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label

当我在横向上启动我的应用程序时,我可以看到一些元素在屏幕外 . 我可以毫无问题地滚动到这些 . 但是,当使用VoiceOver时,我可以滑动以在屏幕上移动元素,但是应用程序不会通过单独滑动滚动浏览屏幕上的最后一个可见元素 . 如果我将iPad旋转到纵向模式,我可以滑动到无法访问的元素,并继续滑动到纵向模式下屏幕外的其他元素 . 我可以使用三指滑动向下移动到下一个“页面”并选择一个元素继续,但这不是我所期望的 . 我曾期望只是继续滑动,下一个元素将滚动到视图中 .

该应用程序是使用Xcode 6.4在Swift 1.2中编写的,我在运行iOS 8.4的iPad Mini 2上运行该应用程序

有任何想法吗?

2 回答

  • 1

    您有责任滚动以响应焦点更改 . 使用UIAccessibilityFocus Protocol监视当前焦点,并在关闭屏幕外元素时以编程方式滚动视图 .

  • 2

    accessibilityElements

    容器中可访问性元素的数组 . 您可以实现此属性而不是动态方法来支持检索包含的元素 . 此属性的默认值为 nil .

    您可以按以下方式重新分配辅助功能视图的accessibilityElements的值:

    self.containerView.accessibilityElements = [self.label1,
                                                self.label2,
                                                self.label3,
                                                self.label4,
                                                self.label1]
    
    
    self.scrollView.accessibilityElements = [self.containerView]
    

相关问题