Голосовое сопровождение iOS для пользовательского представления, отображаемого над uiviewcontroller

У меня есть UIViewController, назовем его MainViewController, экземпляр дочернего контроллера (ChildViewController типа UITableViewController) добавлен в MainViewController, доступность ChildViewController установлена, и голосовое сопровождение отлично работает для того же.

MainViewController имеет кнопку на панели инструментов, при нажатии на нее будет отображаться настраиваемый вид, как показано ниже.

//CustomView class
func show() {
    UIView.animate(withDuration:0.5, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 5, options: .curveEaseInOut, animations: {
        self.disabledLayer.backgroundColor = UIColor.init(white: 0, alpha: 0.55)
        self.transform = .identity
    }, completion: {
        (value: Bool) in
        self.accessibilityElements = [titleLabel, closeButton] // titleLabel, closeButton are added dynamically to the view and are of type UILabel and UIButton respectively
    })
}

при этом закадровый голос никогда не использовался для доступа (чтения) к настраиваемым элементам представления. после некоторых исследований добавлена ​​строка ниже в MainViewController в обработчике нажатия кнопки панели инструментов

UIAccessibility.post(notification: .screenChanged, argument: actionView)

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

Но проблема в том, что когда я нажимаю на любой элемент в CustomView, он не выбран и не читается, вместо этого выбираются и читаются элементы ChildViewController, который находится в фоновом режиме, в этом положении касания.

В Swap работает как положено

При обмене работает должным образом

Проблема - при нажатии на кнопку закрытия выбирается элемент в контроллере childview, который находится в фоновом режиме.

Проблема - при нажатии на кнопку закрытия выбирается элемент в контроллере childview, который находится в фоновом режиме

Примечание: CustomView имеет дочерний вид с полупрозрачным фоном. Цвет

заранее спасибо


person Rajesh Rs    schedule 19.08.2019    source источник


Ответы (1)


Пользовательское представление - это модальное представление, которое отображается поверх текущего uiviewcontroller.

Добавили строку ниже в CustomView, которая решила проблему.

self.accessibilityViewIsModal = true

В этом случае VoiceOver игнорирует элементы в представлениях, которые являются родственниками получателя.

Дополнительные сведения см. в документации Apple

person Rajesh Rs    schedule 21.08.2019