5

Próbuję uzyskać głos nad pracą z widokiem OpenGL, w szczególności z ramy cocos2d.Niestandardowy interfejs UIView nie jest dostępny na Voice over

Od przewodnika jabłko Accessibility Śledziłem tę sekcję: Make the Contents of Custom Container Views Accessible

Mam podklasy widoku (CCGLView dla Cocos2d osób), która jest UIView, w celu wdrożenia protokołu UIAccessibilityContainer nieformalny.

realizacja UIAccessibilityContainer w moim podklasy UIView:

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

Kod ten nazywany jest uzyskiwanie i -(NSArray *)acessibilityElements zwraca tablicę UIAccessibilityElements. Jednak sterowanie głosowe nie pojawia się po dotknięciu ekranu. Jakieś pomysły na temat tego, co tracę lub robię źle?

Inne informacje:

Używam storyboard i dodanie CCGLView do UIView w serii ujęć. _director.view jest CCGLView, który podklasowałem.

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

Przez chwilę podejrzewałem, że ponieważ dodałem podrzędny że to było przyczyną, że nie pojawi się, ale próbowałem też instacji UIView w serii ujęć, w ten sam sposób, ale to też nie działa.

Również w ten sposób tworzę każdy UIAccessibilityElement w tablicy.

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; 

Odpowiedz

6

Znaleziono rozwiązanie, które działa teraz, na wypadek gdyby ktoś miał ten problem. -(id)accessibilityElementAtIndex:(NSInteger)index zwrócił prawidłową wartość UIAccessibilityElement, ale wygląda na to, że nie został zatrzymany przez to, co jest używane przez interfejs API dostępności. Zrobiłem silną własność NSArray, aby zachować UIAccessibilityElementy i teraz działa dobrze.

+0

To doprowadzało mnie do szału już od kilku godzin - dzięki! –

Powiązane problemy