如何为 VoiceOver 分组 UITableView?

问题描述 投票:0回答:1

我有一个带有无限单元格的 UITableView,这些单元格会在您向下滚动时加载。我的底部还有一个浮动按钮。 VoiceOver 逐一读取单元格,问题是当加载新单元格时,永远不会到达该按钮。我希望 VoiceOver 将表格视为一个组,访问并浏览其元素,并能够退出以转到按钮。我想要的是类似的东西 邮件应用程序目前可以

我正在 Swift 中使用 UIKit。

我尝试将带有

UITableView
标志的
isAccessibilityElement
设置为
true
但它似乎没有任何影响。我也尝试过将
accessibilityContainerType
设置为
.semanticGroup

当进入第一个单元格时,

accessibilityLabel
ÙITableView
会读取它。

swift uitableview accessibility voiceover
1个回答
0
投票

您通过使用

accessibilityContainerType
属性和 .semanticGroup 值遵循了适当的路径,但我认为您仅为表视图编写了它。 😳
要从一个组移动到另一组,应将此属性插入到每个所需的元素中。

我使用 UIKit 和故事板在 Xcode 14

iOS 16.4
下重现了您的环境。

我将此属性实现到标签、表格视图和按钮,以便让 VoiceOver 理解可以选择三组不同的元素:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var myLabel: UILabel!
    @IBOutlet weak var myTableView: UITableView!
    @IBOutlet weak var myButton: UIButton!
    let maxCells = 100

    override func viewDidLoad() {
        super.viewDidLoad()
    
        myLabel.accessibilityContainerType = .semanticGroup
        myTableView.accessibilityContainerType = .semanticGroup
        myButton.accessibilityContainerType = .semanticGroup
    
        myTableView.delegate = self
        myTableView.dataSource = self
    }

    func tableView(_ tableView: UITableView,
                   numberOfRowsInSection section: Int) -> Int { return maxCells }

    func tableView(_ tableView: UITableView,
                   cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
        let myCell = myTableView.dequeueReusableCell(withIdentifier: "myCell",
                                                     for: indexPath)
        var config = myCell.defaultContentConfiguration()
        config.text = "Table view cell n° \(indexPath.row)"
    
        myCell.contentConfiguration = config
        return myCell
    }
}

接下来,请按照以下步骤了解使用 VoiceOver 实现目标的正确手势

  1. 通过转子,选择
    Containers
    项目
  2. 从标签中,用一根手指向下滑动到达表格视图中的第一个元素。
  3. 从此位置重现此手势以退出表格视图并找到按钮。
  4. 在表格视图内时,仍然可以通过用一根手指向左/向右滑动滚动以获取每个单元格。
  5. 无论表格视图中的哪个位置,您只需用一根手指向下滑动即可到达按钮

您现在可以将表格视图视为一个组并退出它,而无需使用 VoiceOver 滚动其中的所有单元格。 😉🍪🎉

© www.soinside.com 2019 - 2024. All rights reserved.