我有一个带有无限单元格的 UITableView,这些单元格会在您向下滚动时加载。我的底部还有一个浮动按钮。 VoiceOver 逐一读取单元格,问题是当加载新单元格时,永远不会到达该按钮。我希望 VoiceOver 将表格视为一个组,访问并浏览其元素,并能够退出以转到按钮。我想要的是类似的东西 邮件应用程序目前可以。
我正在 Swift 中使用 UIKit。
我尝试将带有
UITableView
标志的 isAccessibilityElement
设置为 true
但它似乎没有任何影响。我也尝试过将 accessibilityContainerType
设置为 .semanticGroup
。
当进入第一个单元格时,
accessibilityLabel
到 ÙITableView
会读取它。
您通过使用
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 实现目标的正确手势:
Containers
项目。您现在可以将表格视图视为一个组并退出它,而无需使用 VoiceOver 滚动其中的所有单元格。 😉🍪🎉