У меня возникли проблемы с исправлением озвучки после удаления строки. структура такая:
У меня есть tableview с 2 разделами.
В нормальном "состоянии" с раскрытой ячейкой озвучка работает отлично. Когда пользователь нажимает кнопку и удаляет строку в первом разделе, озвучка прерывается. Если листать сверху вниз, то все нормально. Вместо этого, когда вы прокручиваете вверх, 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
элемент доступности — это карточка внутри ячейки, например:
cardView.isAccessibilityElement = true
cardView.accessibilityTraits = .button
Я был бы очень признателен за вашу помощь, я пробовал разные решения, но ни одно из них не работает. Это довольно большая головная боль!
Дайте мне знать, если вам нужна дополнительная информация, чтобы решить эту проблему. Спасибо.





Решил это, всегда сохраняя строку в первом разделе.
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
}