support people para over for features discapacitado ciegos apple accesibilidad iphone ios uiview accessibility voiceover

iphone - people - Evite que VoiceOver muestre vistas que estén debajo de una vista transparente más grande



iphone shop (4)

Resumen: quiero replicar el comportamiento de accesibilidad de un UIAlertView, donde la vista de fondo todavía está visible pero VoiceOver no interactúa con ella.

Detalle: He implementado la accesibilidad para una aplicación de iPhone, pero aún me queda un problema. En algunos casos, muestro una vista grande sobre todas las demás (parcialmente transparente, que cubre la mayor parte de la vista original) que contiene etiquetas y un botón de cierre. Es decir, básicamente una ventana emergente / alerta personalizada. El problema es que VoiceOver continúa revelando las vistas / controles debajo de él.

Un método para evitar que las vistas ocultas sean reveladas por VoiceOver es configurar todo el fondo de la vista personalizada para que sea accesible. Sin embargo, esto no es realmente lo que queremos, ya que el usuario no debe interactuar con esta vista que contiene la vista, sino que solo sus subvistas (etiquetas / botones).


Creo que deberías usar esto en tu vista superior:

C objetivo

- (BOOL)accessibilityViewIsModal { return YES; }

Rápido

accessibilityViewIsModal = true

Esto hace que todos los elementos del controlador de vista que están ocultos no sean accesibles.

Una implementación podría ser establecerlo en true cuando muestres la vista y establecerlo en false cuando descartes esa vista.

Más información

Nota: Requiere iOS5 y superior


Cuando oculta el elemento, puede establecer isAccessibilityItem en NO.


Puede establecer las siguientes propiedades en la vista que superpone el fondo:

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

¿Esto funciona?


Swift 4

De inmediato, intente esto: antes de presentar su vista, configure la vista del controlador de vista de esta manera:

yourViewController.view.accessibilityViewIsModal = true

También intente configurar self.view.accessibilityViewIsModal en true en viewWillAppear

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

También puede ser útil si envía una notificación de posibilidades de pantalla cuando aparece su vista modal o emergente agregando esto a la vista. Aparecerá:

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