iphone - Establecer los atributos de accesibilidad en UIBarButtonItem
objective-c accessibility (8)
Bien, parece que no hay forma de hacerlo en Interface Builder, aunque puedes establecer atributos de accesibilidad en otros elementos de la interfaz de usuario utilizando IB. Así que puse una etiqueta en mi barra de herramientas y luego agregué este código a mi método viewWillAppear:
UIToolbar *bottombar = (UIToolbar*)[self viewWithTag:kBottomToolbar];
UIView *view = (UIView*)[bottombar.items objectAtIndex:0];
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")];
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")];
y así sucesivamente para cada elemento del botón ...
No es el más elegante, pero funciona.
Tengo varios objetos UIBarButtonItem en Interface Builder y no puedo encontrar ninguna opción para establecer la etiqueta de accesibilidad o sugerencia para estos botones.
¿Cómo puedo configurar estos atributos?
Echa un vistazo a la documentación de Apple en UIAccessibility .
En realidad, no es suficiente con solo establecer el atributo AccessibilityLabel Runtime Atribute en IB. También debe establecer isAccessibilityElement en true también. Esto mantiene toda la información de accesibilidad dentro de IB.
Intentar establecer etiquetas de accesibilidad manualmente no me funcionó con las imágenes de UIBarButtonItem. Sin embargo, si configuro el título manualmente, la etiqueta funcionará. Pero muestra el título debajo de la imagen.
Terminé creando un UIButton y usándolo como una vista personalizada para el UIBarButtonItem. La única pérdida es el enmascaramiento de imagen que realiza UIBarButtonItem. Bonificación añadida: accesibilidad configurable en IB.
Obtuve el código anterior para trabajar con UIBarButtonItems con una línea adicional:
[ver setIsAccessibilityElement: YES];
Puede usar IBInspectable
para esto, de modo que obtenga algunas opciones prácticas en el panel lateral de Interface Builder.
public extension UIBarButtonItem {
@IBInspectable var accessibilityEnabled: Bool {
get {
return isAccessibilityElement
}
set {
isAccessibilityElement = newValue
}
}
@IBInspectable var accessibilityLabelText: String? {
get {
return accessibilityLabel
}
set {
accessibilityLabel = newValue
}
}
}
https://gist.github.com/KaneCheshire/dcce5246c3399072a5200189bfc53fe2
Puede usar los "atributos de tiempo de ejecución definidos por el usuario" y especificar su información de accesibilidad allí:
Sé que esto es viejo pero acabo de encontrar una necesidad para esto. A partir de iOS 5.0, ahora puede configurar fácilmente la etiqueta de accesibilidad de un UIBarButtonItem
haciendo lo siguiente:
UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...;
btn.accessibilityLabel = @"Label";
No más hacks.