我正在尝试使用openGL视图,特别是来自cocos2d框架。
在Apple Accessibility指南中,我按照此部分进行了操作:Make the Contents of Custom Container Views Accessible
我已将子视图(CCGLView for cocos2d people)(它是一个UIView)实现了非正式的UIAccessibilityContainer协议。
我的子类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];
}
此代码被调用,-(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];
有一段时间我怀疑是因为我添加了子视图,这导致它不显示,但我也尝试在故事板中以同样的方式对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;
答案 0 :(得分:8)
找到一个现在正在运行的解决方案,以防有人遇到此问题。 -(id)accessibilityElementAtIndex:(NSInteger)index
正在返回一个正确的UIAccessibilityElement
,但看起来它没有被任何Accessibility API使用它保留。我创建了一个强大的NSArray属性来保存UIAccessibilityElements,现在它工作正常。