2012-05-17 12 views
8

Tengo un UITableView que compilo en loadView. Una de las cosas que hago en loadView es crear un UIView para actuar como el encabezado de la tabla y rellenarlo con UIImageView. La vista de imagen contiene una imagen que es un título estilizado, por lo que quiero agregar una etiqueta de accesibilidad para los usuarios de VoiceOver. Sin embargo, no puedo hacer que VoiceOver se "enfoque" en la imagen para leer la etiqueta, y el inspector de accesibilidad no responde al hacer clic en la imagen en el simulador. Mi (abreviado) código de la siguiente manera:estableciendo un Label de accesibilidad en un UIImageView contenido en el encabezado UITableView

... in -loadView ... 
// Make header view 
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(...)]; 
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[self titleImage]]; 
titleImageView.accessibilityLabel = [self accessibilityLabelForTitleImage]; 
[headerView addSubview:titleImageView]; 

// Make table view 
self.tableView = [[UITableView alloc] initWithFrame:CGRect(...) style:UITableViewStylePlain]; 
self.tableView.tableHeaderView = headerView; 
... code continues ... 

me he metido a través de GDB y accessibilityLabelForTitleImage devuelve una cadena. po [titleImageView accessibilityLabel] imprime la cadena correcta, pero sigo sin poder enfocarme en la vista de la imagen. Tenga en cuenta que las vistas en sí mismas aparecen y responden según corresponda.

¿Echo de menos algo? ¿Hay alguna manera de forzar a VoiceOver a reconocer una vista de imagen?

+0

¿Hiciste esto? imageView.userInteractionEnabled = YES; –

+0

No, no me di cuenta de que VoiceOver cuenta como interacción de esa manera. Déjame intentarlo ... – kevboh

+0

No, el ajuste 'userInteractionEnabled' a YES (tanto para la vista de imagen como para su elemento principal) no me permite enfocarme. – kevboh

Respuesta

13

En voz en off, con el fin de hacer que un elemento accesible: -

  1. usted tiene que establecer la propiedad setIsAccessibilityElement como verdadero lo que no encuentro en el código.

  2. El otro punto importante es que para hacer que los elementos secundarios (subvistas) sean accesibles, tiene que hacerlos accesibles por separado, mientras que los padres no deben ser accesibles (también debe especificar esto).

  3. Implemente el protocolo UIAccessibilityContainer en su celda personalizada.

Será una gran historia si voy en Éntrenos en refieren este Accessibility voice over by apple.

Espero que esto ayude.

+2

Configuración de 'isAccessibilityElement' en true lo hizo. Leí los documentos, no puedo creer que me haya perdido. ¡Gracias! – kevboh

+0

Ocurre a veces ... buena suerte por cierto –

3

Utilicé KIF para probar mi aplicación IOS. En mi vista de tabla, asigné valor a tableview.accesssibilityIdentifier en lugar de tableview.accessibilityLabel. Funcionó para mí ¿Quieres intentarlo?

Cuestiones relacionadas