如何在删除TableView中的行后修复画外音

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

删除一行后,我在修复画外音方面遇到了一些问题。结构是这样的:

我有2个部分的tableview。

  • 第一部分得到一个高度= 0的标题,只有一行可变高度。
  • 第二部分有一个固定高度的标题,里面有一个按钮;此部分中的行可以是'n'。当用户点击标题内的按钮时,根据先前的状态删除或重新插入第一部分中的单元格。

在细胞扩展的正常“状态”中,配音完美无缺。当用户点击按钮并删除第一部分中的行时,配音中断。如果我从上到下浏览就可以了。相反,当您向上滚动时,vo会读取屏幕上可见的单元格,但会在其下方的单元格之前读取第一个部分的标题。

插入和删除非常简单:

let indexPath = IndexPath(row: 0, section: 0)
if isExpanded {
   if tableView.contentOffset.y <= 0 {
       tableView.insertRows(at: [indexPath], with: .automatic)
   } else {
       tableView.reloadData()
       tableView.scrollToRow(at: indexPath, at: .top, animated: true)
   }
} else {
   tableView.deleteRows(at: [indexPath], with: .automatic)
}

每个部分的细胞都有:isAccessibilityElement = false

accessibility元素是单元格内的卡片,如下所示:

cardView.isAccessibilityElement = true
cardView.accessibilityTraits = .button

我真的很感谢你的帮助,我尝试了不同的解决方案,但没有一个能奏效。这真是令人头疼!

如果您需要更多信息来解决此问题,请与我们联系。谢谢。

ios swift accessibility voiceover
1个回答
0
投票

通过在第一部分中始终保持一行来解决这个问题。

tableView.performBatchUpdates({
     tableView.deleteRows(at: [indexPath], with: .fade)
     tableView.insertRows(at: [indexPath], with: .fade)
}, completion: nil)

但是当变量isExpanded为false时,第一部分中行的高度设置为0而不是自动。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.section == 0 {
            return isExpanded ? UITableView.automaticDimension : 0
        }
        return UITableView.automaticDimension
    }
© www.soinside.com 2019 - 2024. All rights reserved.