5

Sto cercando di ottenere il voice over lavorando con una vista openGL, in particolare dal framework cocos2d.UIView personalizzata non visualizza accessibilità su Voice over

Dalla guida di Apple Accessibilità ho seguito questa sezione: Make the Contents of Custom Container Views Accessible

ho sottoclasse la vista (CCGLView per le persone Cocos2d), che è un UIView, per implementare il protocollo informale UIAccessibilityContainer.

implementazione UIAccessibilityContainer nel mio UIView sottoclasse:

-(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]; 
} 

Questo codice è sempre chiamato e -(NSArray *)acessibilityElements restituisce un array di UIAccessibilityElements. Tuttavia i controlli vocali non vengono visualizzati quando tocco lo schermo. Qualche idea su cosa mi sfugge o che mi sbaglio?

Altre informazioni:

sto usando uno storyboard e aggiungere il CCGLView al UIView nello storyboard. _director.view è il CCGLView che ho sottoclasse.

// 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]; 

Per un po 'sospetto che perché ho aggiunto la visualizzazione secondaria che stava causando non venga visualizzata, ma anche provato sottoclasse UIView nello storyboard allo stesso modo, ma era anche non funzionava.

Anche questo è come sto creando ogni UIAccessibilityElement nella matrice.

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; 

risposta

6

trovata una soluzione che sta lavorando ora, nel caso qualcuno ha questo problema. -(id)accessibilityElementAtIndex:(NSInteger)index restituiva un valore corretto UIAccessibilityElement ma sembra che non sia stato mantenuto da qualsiasi API di accessibilità lo stia utilizzando. Ho creato una forte proprietà NSArray per contenere gli UIAccessibilityElements e ora funziona correttamente.

+0

Questo mi sta facendo impazzire per un paio d'ore - grazie! –

Problemi correlati