我为两个基于框架的辅助功能元素创建一个容器,这些辅助功能元素是使用自定义uiview中的Core Graphics绘制的。
我希望这两个元素(在这种情况下是两个游标)响应一个手指向上和向下滑动,所以我使用特征UIAccessibilityTraitAdjustable
。
我已经实施了Apple提供的文档中描述的协议。我能够选择这两个元素,但是一个手指滚动似乎没有调用accessibilityIncrement
和accessibilityDecrement
。有没有我错过的东西?
-(NSArray *)accessibleElements
{
if (_accessibleElements != nil) {
return _accessibleElements;
}
_accessibleElements = [[NSMutableArray alloc] init];
//add left cursor
UIAccessibilityElement *lcursorEl = [[UIAccessibilityElement alloc]
initWithAccessibilityContainer:self];
lcursorEl.accessibilityFrame = [self convertRect:_lcursorFrame
toView:nil];
lcursorEl.accessibilityLabel = NSLocalizedString(@"Left Cursor", nil);
lcursorEl.accessibilityTraits = UIAccessibilityTraitAdjustable;
[_accessibleElements addObject:lcursorEl];
//add right cursor
UIAccessibilityElement *rcursorEl = [[UIAccessibilityElement alloc]
initWithAccessibilityContainer:self];
rcursorEl.accessibilityFrame = [self convertRect:_rcursorFrame
toView:nil];
rcursorEl.accessibilityLabel = NSLocalizedString(@"Right Cursor", nil);
//rcursorEl.accessibilityTraits = UIAccessibilityTraitAdjustable ;
[_accessibleElements addObject:rcursorEl];
return _accessibleElements;
}
#pragma mark accessible elements protocol methods
- (NSInteger)accessibilityElementCount
{
return [[self accessibleElements] count];
}
- (id)accessibilityElementAtIndex:(NSInteger)index
{
return [[self accessibleElements] objectAtIndex:index];
}
- (NSInteger)indexOfAccessibilityElement:(id)element
{
return [[self accessibleElements] indexOfObject:element];
}
- (BOOL)isAccessibilityElement
{
return NO;
}
-(void)accessibilityIncrement
{
NSLog(@"Adjusting Inc");
}
-(void)accessibilityDecrement
{
NSLog(@"Adjusting dec");
}
答案 0 :(得分:0)
由于您在要创建的辅助功能元素上设置可调整特征,因此accessibilityIncrement
和accessibilityDecrement
将在这些元素上调用,而不是在控制器上调用。这就是为什么你没有看到任何回调。
相反,你可以继承UIAccessibilityElement
并在那里实现增量和减量方法。