VoiceOver 没有滚动到横向屏幕外的元素?

col*_*srj 7 uiscrollview ios voiceover uiaccessibility

如何让 VoiceOver 滚动到 UIScrollView 中的屏幕外元素。

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

Scroll View
-> UIView
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label
--> UIView
----> Label
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗?

小智 7

可访问性元素

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

您可以通过以下方式重新分配可访问性视图的 accessibilityElements 的值:

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

self.scrollView.accessibilityElements = [self.containerView]
Run Code Online (Sandbox Code Playgroud)


Jus*_*tin 4

您有责任滚动以响应焦点变化。使用 UIAccessibilityFocus 协议来监视当前焦点,并在屏幕外元素获得焦点时以编程方式滚动视图。