Etiqueta de accesibilidad de VoiceOver para Touch ID

Estoy intentando asegurar que la aplicación de iOS en la que estoy trabajando sea accesible y estoy tratando de implementar VoiceOver para asegurarme esto.

Una cosa extraña para la que no puedo encontrar ayuda es cuando se muestra la vista Touch ID (en mi caso, para iniciar session en la aplicación). VoiceOver pronuncia ID como palabra y no ID

He intentado implementar los attributes de accesibilidad para NSString y el object LAContext, pero ninguno parece cambiar lo que lee VoiceOver. Fragmentos de código a continuación:

LAContext *context = [[LAContext alloc] init]; [context setIsAccessibilityElement:YES]; [context setAccessibilityLabel:@"TEST 2"]; NSError *error = nil; NSString *label = @"Please authenticate your ID using the Touch ID"; [label setIsAccessibilityElement:YES]; [label setAccessibilityTraits:UIAccessibilityTraitStaticText]; [label setAccessibilityLabel:@"TEST"]; showingTouchID = TRUE; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:label reply:^(BOOL success, NSError *error) { ...... 

La salida de VoiceOver con o sin context que tiene los attributes de accesibilidad es siempre el text de la label.

Toda la ayuda muy apreciada 🙂

Definitivamente no debería cambiar la label de accesibilidad solo para que VoiceOver pronuncie las cosas correctamente (es decir, no intente "hackear" la pronunciación de la label). La razón es que VoiceOver no tiene salida de voz solamente; También tiene salida en braille donde los usuarios ciegos esperan leer las cosas exactamente letra por letra tal como están escritas (es decir, ver exactamente todos los espacios, mayúsculas / minúsculas, etc.) Si lo hizo, por ejemplo, escriba "ID" en lugar de "ID ", entonces mientras VoiceOver lo pronuncie tal vez correctamente (en la versión específica de iOS), los usuarios ciegos, después de leer" ID "en una pantalla en braille, podrían pensar que así es como se escribe y aparentemente digamos no profesionalmente cuando Entonces utilizarían esta ortografía incorrecta en intercambios escritos con otras personas.

La forma correcta de lidiar con esto, aunque sin darle una solución inmediata, es:

  1. Presente un error con Apple sobre la pronunciación de la palabra específica con la voz específica en el idioma específico (por ejemplo, "Pronombre pronunciado: [aj'di:]" vs. "Pronombre pronunciación: [id]")
  2. Presente un error con Apple para solicitar la posibilidad de personalizar solo la pronunciación (es decir, dónde dejaría la label de accesibilidad intacta y correcta, pero especifique a la voz cómo debe pronunciar cierta parte del text) y dónde podría hacerse esta personalización para cada idioma individualmente por el traductor que traduce las cadenas (porque la pronunciación incorrecta es específica del idioma), también vea el siguiente punto.
  3. Si puede volver a networkingactar, pruebe con una palabra diferente a la problemática (que no parece ser aplicable en caso de "Touch ID", que es un término establecido). Pero esto también es un hack, ya que solo resuelve el original en inglés y no le importan las traducciones, donde la modificación podría, por el contrario, complicar potencialmente la pronunciación.

Lo siento por las malas noticias.

Finalmente, aquí, tanto en iOS 8.4.1 como iOS 9.0.2, VoiceOver con voz en inglés US iOS pnetworkingeterminada, al less en esta página web, pronuncia "ID" en "Touch ID" como [ajdi:], no [id].

Puedes probar esto para un trabajo rápido: solo da espacio entre I y D

  NSString *label = @"Please authenticate your ID using the Touch ID"; label.accessibilityLabel=@"Please authenticate your ID using the Touch ID"; 

También tenga en count que solo puede establecer accesibilidad a UIElements y no puede configurarlo a variables generales. No tiene sentido establecer la label de accesibilidad para LAContext y NSString.

Usted debe configurar la label de accesibilidad para UILabel o el elemento al que le da el NSString.