自定义UIView不显示语音的可访问性

tas*_*ari 5 accessibility objective-c cocos2d-iphone ios uiaccessibility

我正在试图使用openGL视图,特别是cocos2d框架.

从Apple Accessibility指南,我按照此部分操作:使自定义容器视图的内容可访问

我已经将用于实现非正式UIAccessibilityContainer协议的视图(CCGLView for cocos2d people)(它是一个UIView)子类化.

我的子类UIView中的UIAccessibilityContainer实现:

-(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];
}
Run Code Online (Sandbox Code Playgroud)

这个代码被调用并-(NSArray *)acessibilityElements返回一个UIAccessibilityElements数组.但是,当我触摸屏幕时,没有显示语音控件.关于我遗失或做错的任何想法?

其他信息:

我正在使用故事板并将CCGLView添加到故事板中的UIView._director.view是我子类化的CCGLView.

 // 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];
Run Code Online (Sandbox Code Playgroud)

有一段时间我怀疑,因为我添加了子视图,这导致它不显示,但我也尝试在故事板中以同样的方式继承UIView,但它也无法正常工作.

这也是我在数组中创建每个UIAccessibilityElement的方法.

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;
Run Code Online (Sandbox Code Playgroud)

tas*_*ari 8

找到一个现在正在运行的解决方案,以防有人遇到此问题. -(id)accessibilityElementAtIndex:(NSInteger)index正在返回一个正确UIAccessibilityElement但看起来它没有被任何Accessibility API使用它保留.我创建了一个强大的NSArray属性来保存UIAccessibilityElements,现在它工作正常.