ios objective-c uicollectionview accessibility voiceover

ios - El enfoque de VoiceOver restablece UICollectionView a la primera entrada?



objective-c accessibility (1)

Estoy usando VoiceOver y tengo un problema con un UICollectionView . Tengo una pantalla inicial con diez botones, cada uno de los cuales se enlaza a una de las diez celdas en la vista de colección. La vista de colección es en realidad el tamaño completo de la pantalla, y cada celda contiene un controlador de vista secundario. Todo esto funciona bien con VoiceOver apagado, pero cuando está encendido, la activación de uno de los botones en el medio del conjunto siempre hace que la vista de colección aparezca en su primera celda, incluso si no toqué el primer botón. Creo que esto se debe a que el "enfoque" de VoiceOver va al primer elemento que ve (es decir, la primera celda).

He intentado usar UIAccessibilityScreenChangedNotification y lo mismo con Layout con un argumento de la celda en cuestión, pero no hace ninguna diferencia, no aparece en mi elemento requerido y siempre aparece en la primera celda de la colección.

¿Qué podría estar haciendo mal aquí?

Estoy agregando un fragmento, esto se llama en viewDidLayoutSubviews , y funciona bien para el desplazamiento real si VoiceOver está desactivado. Pero tan pronto como VO está activada, se rompe.

if (self.initialIndexPath) { [self.collectionView scrollToItemAtIndexPath:self.initialIndexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, [self.collectionView cellForItemAtIndexPath:self.initialIndexPath]); }

Esto funciona absolutamente bien para enfocar realmente en la celda, pero la parte de VoiceOver se ignora por completo, la notificación no cambia el enfoque a la celda correcta, es siempre el primer elemento en la primera celda.

Además, las celdas en sí NO son elementos de accesibilidad y no deberían, implementan el protocolo UIAccessibilityContainer y, por lo tanto, la etiqueta del título de cada celda es donde me gustaría que terminara el enfoque.


Esto fue un error en iOS y está arreglado ahora.

Comencé a ver este error en iOS8. Y reporté un error a Apple sobre este 6. Noviembre 2014. Se corrigió en iOS 9.3.2.

No hay nada que puedas hacer como desarrollador si estás en la versión del sistema operativo afectado. Recomienda a los usuarios de su aplicación para actualizar el sistema operativo.