Если вы хотите отобразить табличное представление с заголовками разделов, используя VoiceOver, никогда не произнося «заголовок», просто забудьте об этом: это тупик - в настоящее время нет решения , чтобы завершить этот вид проектирования табличного представления.
Наилучшим способом достижения технических целей является создание единого табличного представления, заголовки разделов которого представляют собой отдельные ячейки с другим внешним видом ⟹ Я указал «технический», поскольку функционально это определенно нене подходит или рекомендуется для пользователей VoiceOver.
Действительно, заголовки разделов являются важными маркерами, которые не только разграничивают определенные блоки информации, но и позволяют очень быстро перемещаться из одного раздела в другой благодаряротор.
Я полагаю, что ваша цель может быть чисто визуальной, поскольку, функционально говоря, она не может быть одобрена никакими экспертами по доступности или пользователями VoiceOver .
Как выЯ потратил много времени, чтобы попытаться найти техническое решение для этогоoblem "но, даже если бы я нашел это (к сожалению, я не нашел) , я бы точно не реализовал это.
========== РЕДАКТИРОВАТЬ ==========
После вашего комментария (25.07.2019) , теперь я понимаю, что вашей проблемой является заголовок, который читается дважды ине воля удаления черты 'header'.
Я создал пустой проект, в котором реализовал фрагмент кода ниже, чтобы получить таблицу с заголовками, которые никогда не повторяются дважды:
class SimpleHeadersTableViewController: UITableViewController {
override func numberOfSections(in tableView: UITableView) -> Int { return 4 }
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 }
override func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRect(origin: CGPoint.zero,
size: CGSize(width: tableView.frame.width,
height: 44)))
let a11yHeader = UIAccessibilityElement(accessibilityContainer: headerView)
a11yHeader.accessibilityFrameInContainerSpace = headerView.frame
a11yHeader.isAccessibilityElement = true
a11yHeader.accessibilityLabel = "Pending requests"
a11yHeader.accessibilityTraits = .header
headerView.accessibilityElements = [a11yHeader]
return headerView
}
override func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId",
for: indexPath)
cell.textLabel?.text = String(indexPath.row)
return cell
}
}
Попробуйте это и адаптируйте к своему приложению.
Теперь VoiceOver считывает заголовок таблицы один раз и всегда добавляет слово «заголовок» .