Cuando agrega un UISegmentedControl a una vista, UIAccessibility se centrará en él y dirá:
"(Selected) ItemName Button 1 of 2" "ItemName Button 2 of 2" Tengo un control personalizado que tiene UIButtons que alternan de forma similar a un UISegmentedControl . Pero lo que estoy tratando de averiguar es cómo hacer que Voice Over anuncie la n of n al final.
Lo más parecido que he encontrado es asignar .accessibilityTraits = .tabBar en el contenedor. El tema es que anuncia:
"ItemName Button Tab 2 of 2"Pero para cumplir con nuestras pautas de accesibilidad, no podemos hacer que anuncie "pestaña".
https://developer.apple.com/documentation/uikit/uiaccessibility/uiaccessibilitytraits/1648592-tabbar
Además de escribir una etiqueta de accessibilityLabel personalizada, ¿hay algo dentro de UIAccessibility que pueda manejar esta lógica?
Tengo un control personalizado que tiene UIButtons que alternan de forma similar a un UISegmentedControl. Pero lo que estoy tratando de averiguar es cómo hacer que Voice Over anuncie la n de n al final.
UIButton en la matriz de elementos de accessibilityElements del control personalizado que actúa como un contenedor.UIButton , configure la etiqueta de accessibilityLabel insertando el resultado de la investigación anterior.
Aquí hay un tipo de lógica que debería ayudarlo a alcanzar su propósito con un poco de código como el siguiente, por ejemplo (Xcode 10.2.1, Swift 5.0, iOS 12) :
class ButtonsViewController: UIViewController { @IBOutlet weak var myCustomContainer: UIView! @IBOutlet weak var btn1: UIButton! @IBOutlet weak var btn2: UIButton! @IBOutlet weak var btn3: UIButton! override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) myCustomContainer.accessibilityElements = [btn1!, btn2!, btn3!] let nbButtons = myCustomContainer.accessibilityElements?.count for (index, elt) in (myCustomContainer.accessibilityElements?.enumerated())! { let btn = elt as! UIButton let btnName = btn.titleLabel?.text btn.accessibilityLabel = btnName! + String(index + 1) + " of " + String(describing: nbButtons!) } } }