将 UIView.isAccessibleElement 设置为 true 会禁用在 Voiceover 模式下单击子视图

use*_*123 4 accessibility ios voiceover swift

所以我有一个自定义视图控制器,它显示一个带有几个按钮的对话框。当视图出现时,我希望画外音读出一些描述对话框的基本信息。为了实现这一点,我将父视图设为可访问元素,并且作为两个按钮的子视图也是可访问元素。我现在的问题是按钮无法直接点击。只能通过在屏幕上向右滑动来到达它们。

class MyViewController: UIViewController {
    let parent = UIView()
    let button1 = UIButton()
    let button2 = UIButton()

    init() {
        parent.addSubview(button1)
        parent.addSubview(button2)
        parent.isAccessibilityElement = true
        button1.isAccessibilityElement = true
        button2.isAccessibilityElement = true
        parent.accessibilityLabel = "Message"
        self.view.addSubview(parent)
        self.view.accessibilityElements = [parent, button1, button2]
    }

    override func viewDidAppear(_ animated: Bool) {
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法让画外音在打开时描述视图,我也愿意。

此外,视图必须是模态的,以便焦点集中在视图上。

XLE*_*_22 8

\n

为了实现这一点,我将父视图设为可访问元素,并且作为两个按钮的子视图也是可访问元素。

\n
\n

这绝对是问题所在:您不能让父视图及其子视图一起访问\xe2\x9f\xb9 请参阅此说明的示例表。
\n如果父视图可访问,VoiceOver 将看不到其子视图,反之亦然。

\n
\n

如果有更好的方法让画外音在打开时描述视图,我也愿意。

\n
\n

使用 VoiceOver 时,您必须尽可能准确和简短。\n当您浏览屏幕时,视图的描述由其元素或其标题本身提供:在我看来,除了不同视图的正确实现
之外,您不应该读出完美标题应提供的描述。您的页面的组件

\n

一位盲人做了精彩的演示,解释了如何在应用程序内编写标签以便于理解。

\n
\n

此外,视图必须是模态的,以便焦点集中在视图上。

\n
\n

达到此目的的最佳方法是使用视图 \xe2\x9f\xb9 的accessibilityViewIsModal属性,如果需要,请查看WWDC 会议期间介绍的示例。

\n