Как исправить наложение голоса после удаления строки в TableView - PullRequest
0 голосов
/ 04 апреля 2019

У меня возникли проблемы с исправлением закадрового комментария после удаления строки.структура выглядит так:

У меня есть таблица с двумя разделами.

  • Первый раздел получил заголовок высоты = 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

элементом доступности является карта внутри ячейки, например:

cardView.isAccessibilityElement = true
cardView.accessibilityTraits = .button

Я был бы очень признателен за вашу помощь, я пробовал разные решения, но ни одиниз них работают.Это большая головная боль!

Дайте мне знать, если вам нужно больше информации, чтобы решить эту проблему.Спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Решил это, сохранив всегда строку в первом разделе.

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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...