Как изменить порядок элементов доступности в контроллере представления, не теряя доступа к панели навигации? - PullRequest
1 голос
/ 12 апреля 2019

У меня есть контроллер представления, который содержит представление таблицы вместе с несколькими «плавающими» элементами управления, которые визуально отображаются в нижней части экрана.

При навигации с помощью VoiceOver это будет иметь больше смысла дляпользователь для навигации, как:

  • кнопка назад (панель навигации)
  • заголовок (панель навигации)
  • кнопка редактирования (панель навигации)
  • плавающая кнопка
  • содержимое таблицы

Но в настоящее время порядок навигации составляет

  • кнопка возврата (панель навигации)
  • title (навигацияbar)
  • кнопка редактирования (панель навигации)
  • содержимое таблицы
  • плавающая кнопка

Когда я явно устанавливаю элементы доступности для контроллера моего представлениячтобы изменить порядок, например

- (void)viewDidLoad {
  self.accessibilityElements = @[self.floatingButton, self.tableView];
}

порядок навигации становится

  • с плавающей кнопкой
  • содержимое таблицы

и навигациябар больше не доступен.

Если я включу self.navigationController.navigationBar вВ начале массива accessibilityElements, затем я получаю порядок навигации

  • кнопка возврата (панель навигации)
  • заголовок (панель навигации)
  • кнопка редактирования (панель навигации)

и проведите пальцем вправо, чтобы вернуться к кнопке «Назад», поэтому я не могу получить доступ к плавающей кнопке или содержимому таблицы.

Есть ли способ изменить порядок доступныхподпункты без потери доступа к панели навигации?

1 Ответ

1 голос
/ 15 апреля 2019

Я попытался воспроизвести проблему, о которой вы упомянули, в пустом проекте после этой раскадровки: enter image description here Я прочитал этот a11y сайт рекомендаций , чтобы предоставить этот фрагмент кода, который я реализовал, чтобы сделать егоработать по желанию:

class TestButtonTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var myTableView: UITableView!
    @IBOutlet weak var bottomButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        myTableView.delegate = self as UITableViewDelegate
        myTableView.dataSource = self as UITableViewDataSource
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.accessibilityElements = [bottomButton, myTableView]
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView,
                   numberOfRowsInSection section: Int) -> Int {
        return 2
    }

    func tableView(_ tableView: UITableView,
                   cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        return zeCell = tableView.dequeueReusableCell(withIdentifier: "myPersoCell",
                                               for: indexPath)
    }
}

Я сделал щелчков правой кнопкой мыши , чтобы получить следующие элементы и получил иллюстрации ниже: enter image description here enter image description here Навигация VoiceOver выполняется по нужному шаблону:

  1. Кнопка возврата (панель навигации) .
  2. Заголовок (панель навигации) .
  3. Кнопка редактирования (панель навигации) .
  4. Плавающая кнопка.
  5. Содержимое таблицы.

Я ничего не указал вчастности и изменили порядок элементов доступности в контроллере представления без потери доступа к панели навигации .

...