UIView personalizada que no muestra accesibilidad en Voice Over

Estoy intentando que la voz funcione con una vista de openGL, específicamente desde el marco de cocos2d.

En la guía de Accesibilidad de Apple, seguí esta sección: Hacer que el contenido de las vistas de contenedor personalizado sea accesible.

He subclasificado la vista (CCGLView para personas cocos2d), que es una UIView, para implementar el protocolo informal UIAccessibilityContainer.

Implementación de UIAccessibilityContainer en mi UIView subclass:

-(NSArray *)accessibilityElements{ return [self.delegate accessibleElements]; } -(BOOL)isAccessibilityElement{ return NO; } -(NSInteger)accessibilityElementCount{ return [self accessibilityElements].count; } -(NSInteger)indexOfAccessibilityElement:(id)element{ return [[self accessibilityElements] indexOfObject:element]; } -(id)accessibilityElementAtIndex:(NSInteger)index{ return [[self accessibilityElements] objectAtIndex:index]; } 

Este código recibe un llamado y -(NSArray *)acessibilityElements devuelve una matriz de UIAccessibilityElements. Sin embargo, los controles de voz no aparecen cuando toco la pantalla. ¿Alguna idea sobre lo que estoy perdiendo o haciendo mal?

Otra información:

Estoy usando un storyboard y agregando CCGLView a la UIView en el guión gráfico. El _director.view es el CCGLView que subclass.

  // Add the director as a child view controller. [self addChildViewController:_director]; // Add the director's OpenGL view, and send it to the back of the view hierarchy so we can place UIKit elements on top of it. [self.view addSubview:_director.view]; [self.view sendSubviewToBack:_director.view]; 

Durante un time sospeché que porque agregué la subvista que esto hacía que no apareciera, pero también traté de subclasificar la UIView en el guión gráfico de la misma manera, pero también no funcionaba.

También así es como estoy creando cada UIAccessibilityElement en la matriz.

 UIAccessibilityElement *elm = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:view]; elm.accessibilityFrame = f; elm.accessibilityLabel = t.letter; elm.isAccessibilityElement = YES; elm.accessibilityHint = @"Button"; elm.accessibilityValue = t.letter; elm.accessibilityTraits = UIAccessibilityTraitButton; 

Encontré una solución que está funcionando ahora, en caso de que alguien tenga este problema. -(id)accessibilityElementAtIndex:(NSInteger)index estaba devolviendo un elemento de UIAccessibilityElement adecuado, pero parece que no estaba siendo retenido por la API de accesibilidad que lo esté utilizando. Hice una fuerte propiedad de NSArray para mantener los elementos de accesibilidad de UIA y ahora está funcionando bien.