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

时间:2015-07-09 13:28:10

标签: ios uiscrollview voiceover uiaccessibility

如何在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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

accessibilityElements

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

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

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


self.scrollView.accessibilityElements = [self.containerView]