我的应用程序中有一个基于UITableView的选择器控件。用户可以滚动表格视图,中间的标记显示所选项目。每个可选项目都是表格视图单元格。
Example
现在我想让我的应用程序voiceover兼容一个朋友。但是这个控件,我很难让它工作。
在开启了"旁白"的情况下,我无法滚动表格视图来选择其他元素。我查看了时钟应用程序中的选取器视图。它也不会滚动。但当你向上或向下轻弹时,它会跳到下一个或上一个值。它显示
"用一个手指向上或向下轻扫以调整值"。
我读了Matt Gammell's VoiceOver guide,他说提示必须说控件做什么,而不是你应该做什么。
所以我推断这是一个特殊的特性,他们用的东西,可以向上或向下滑动,以调整价值。
既然UIPickerView是基于UITableViews的,苹果是如何让它与voiceover一起工作的?我必须使用手势识别器来轻弹吗?
编辑
我在UITableView子类上设置可调整的trait,如下所示:
self.isAccessibilityElement = YES;
self.accessibilityLabel = @"Start date.";
self.accessibilityTraits = UIAccessibilityTraitAdjustable;
表视图实现
- (void)accessibilityIncrement {
NSLog(@"accessibilityIncrement");
}
- (void)accessibilityDecrement {
NSLog(@"accessibilityDecrement");
}
现在,我可以在单元格之间拖移,并且VoiceOver将读取它们的标签,并用黑色矩形标记它们。但表格视图不会滚动,也不会调用上述方法。
单元格本身是isAccessibilityElement = NO;
,不实现可访问性动作方法。
2条答案
按热度按时间hs1ihplo1#
你在寻找可调整的特质:
UIAccessibilityTraitAdjustable
.如果你在你的视图/单元格中指定了这个特性,你也必须在那个视图/单元格中实现
accessibilityIncrement
和accessibilityDecrement
,这是当用户用一个手指上下滑动时调用的两个方法。不需要自己实现任何手势识别器,设置trait就足以获得那种行为(它还会添加"用一个手指向上或向下滑动..."的描述)
hc8w905p2#
将
UIAccessibilityTraitAdjustable
添加到元素的traits中,然后实现-(void)accessibilityIncrement
和-(void)accessibilityDecrement
操作,对于日期选择器,应该为每个组件执行此操作(年、月、date)-其中每个都是一个元素(用户可以通过左右轻弹将VoiceOver光标移动到该位置),并且每个位置都是可调的(当VoiceOver光标在屏幕上时,向上/向下轻弹)。