Запрет VoiceOver на раскрытие представлений, которые находятся под большим прозрачным представлением - PullRequest
17 голосов
/ 15 февраля 2011

Резюме: я хочу воспроизвести поведение доступности UIAlertView, где фоновое представление все еще видно, но VoiceOver не взаимодействует с ним.

Подробно: я реализовал доступность для приложения iPhone, но имеюосталась одна проблема.В некоторых случаях я отображаю большой вид поверх всех остальных (частично прозрачный, охватывающий большую часть исходного вида), содержащий метки и кнопку закрытия.то есть в основном пользовательское представление всплывающих окон / предупреждений.Проблема заключается в том, что VoiceOver продолжает отображать представления / элементы управления, расположенные под ним.

Один из способов предотвратить обнаружение VoiceOver скрытых видов - это сделать весь фон настраиваемого представления доступным.Однако на самом деле это не то, чего мы хотим, так как пользователь не должен взаимодействовать с этим представлением, только его подпредставления (метки / кнопки).

Ответы [ 4 ]

16 голосов
/ 04 декабря 2012

Я думаю, вы должны использовать это в вашем верхнем виде:

Objective-C

- (BOOL)accessibilityViewIsModal {
    return YES;
}

Swift

accessibilityViewIsModal = true

Это делает все элементы скрытого элемента View Controller недоступными.

Реализация может состоять в том, чтобы установить его на true при отображении представления и установить на false при отклонении этого представления.

Подробнее

Примечание: Требуется iOS5 и выше

0 голосов
/ 16 ноября 2018

Swift 4

В быстром попробуйте это: Перед представлением представления настройте представление viewController следующим образом:

yourViewController.view.accessibilityViewIsModal = true

Также попробуйте установить для self.view.accessibilityViewIsModal значение true в viewWillAppear

override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated)
   view.accessibilityViewIsModal = true
}

Также может помочь, если вы отправляете уведомление о возможностях экрана, когда появляется ваше модальное или всплывающее представление, добавляя его в viewWillAppear:

UIAccessibility.post(notification: .screenChanged, argument: nil)
0 голосов
/ 16 ноября 2015

Вы можете установить следующие свойства в представлении, наложенном на фон:

view.isAccessibilityElement = false;
view.isAccessibilityModal = true;

Это работает?

0 голосов
/ 08 августа 2011

Когда вы скрываете элемент, вы можете установить isAccessibilityItem на NO.

...