一尘不染

如何在“行的滑动操作配置”中为VoiceOver添加可访问性标签?

swift

我正在使用Swift 4创建一个iOS应用,并且没有在使用Storyboards。要从Table View
Controller中删除行,用户向左滑动该行,然后单击Delete按钮。

这是我用来实现该代码的代码(未使用任何外部库):

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    self.isAccessibilityElement = true
    self.accessibilityLabel = "Delete row"


    let deleteAction = UIContextualAction(style: .normal , title: "DELETE") { (action, view, handler) in

        self.removeRowFromMyList(indexPath: indexPath.row)

        MyListController.stations.remove(at: indexPath.row)
        self.tableView.deleteRows(at: [indexPath], with: .automatic)

        self.tableView.setEditing(false, animated: true)
        self.tableView.reloadData()
    }
    let swipeAction = UISwipeActionsConfiguration(actions: [deleteAction])
    swipeAction.performsFirstActionWithFullSwipe = false

    return swipeAction
}

我确实检查了其他问题,但没有一个解决。对于解决此问题所需的其他信息,请随时在此处评论。谢谢 :)


阅读 174

收藏
2020-07-07

共1个答案

一尘不染

使用Apple的UIAccessibility中的辅助功能自定义操作

您只需要设置辅助功能自定义操作:

cell.accessibilityCustomActions = [UIAccessibilityCustomAction(name: "Delete", target: self, selector: #selector(theCustomAction))]


@objc private func theCustomAction() -> Bool {
    //Do anything you want here
    return true
}

更新:

因此,我确实重新创建了该项目,但是这次我使用的是Storyboards(不是最后一次),我从Cocoapods导入了SwipeCellKit库,并遵循了他们的文档,VoiceOver在删除indexPath.row中的单元格方面工作得很好。没问题。

2020-07-07