首页 > 解决方案 > 如何将 UITableVewCell 的可访问性特征设置为仅“链接”?

问题描述

我有一个UITableViewCell显示有变色指示器但打开另一个应用程序而不是推送视图控制器(例如“访问我们的网站”,在 Safari 中打开)。我对可访问性和画外音的有限理解使我相信这应该被标记为“链接”而不是“按钮”,因为用户将离开应用程序。为此,我accessibilityTraits.link.

但是,一旦我在单元格上设置了披露指示符,该单元格就会被读取为“访问我们的网站 - 按钮,链接”。

有没有办法保留披露指示符但从.button单元格中删除特征?

标签: iosaccessibilityvoiceover

解决方案


有没有办法保留披露指示器但从单元格中删除 .button 特征?

实现目标的一种方法是创建一个UITableViewCell.link值作为accessibilityTraits属性的子类。

class testCell:UITableViewCell {

    override var accessibilityTraits: UIAccessibilityTraits {
        get { return .link }
        set {  }
    }
}

在视图控制器中指示这种新的单元格类型将仅读取其链接属性,如下所示:

override func tableView(_ tableView: UITableView, 
                        cellForRowAt indexPath: IndexPath) -> testCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", 
                                             for: indexPath) as! testCell

    cell.textLabel?.text = "Visit our Website"
    return cell
}

按照这个原理,您可以将 UITableVewCell 的可访问性特征设置为 'link' only

如果需要,有一个引人入胜的网站,其中提供了许多关于特征的信息以及插图和代码片段。


推荐阅读