我的应用程序中有一个基于UITableView的选择器控件。用户可以滚动表格视图,中心的标记显示所选项目。每个可选项都是一个表视图单元格。
示例:enter link description here 现在我想让我的应用VoiceOver兼容朋友。但是这种控制,我很难让它发挥作用。
启用VoiceOver后,我无法滚动表格视图以选择其他元素。我在时钟应用程序中查看了选择器视图。它也不会滚动。但是,当您向上或向下滑动时,它会跳转到下一个或上一个值。它说
“用一根手指向上或向下滑动以调整值”。
我读了Matt Gammell's VoiceOver guide他在哪里说明提示必须说控件不是你应该做的。
所以我推断这是一个特殊的特性,用于可以向上或向下滑动以调整价值的东西。但是我找不到这样的特质。
由于UIPickerView基于UITableViews,Apple如何使其与VoiceOver一起使用?我必须使用手势识别器进行轻弹吗?
修改
我在UITableView子类上设置可调整特征,如下所示:
self.isAccessibilityElement = YES;
self.accessibilityLabel = @"Start date.";
self.accessibilityTraits = UIAccessibilityTraitAdjustable;
表视图实现
- (void)accessibilityIncrement {
NSLog(@"accessibilityIncrement");
}
- (void)accessibilityDecrement {
NSLog(@"accessibilityDecrement");
}
现在我可以拖动单元格,VoiceOver会读取标签并用黑色矩形标记它们。但是表视图不会滚动,上面的方法也不会被调用。
单元格本身是isAccessibilityElement = NO;
,并且不实现可访问性操作方法。
答案 0 :(得分:1)
您将UIAccessibilityTraitAdjustable
添加到元素的特征中。然后,您实施-(void)accessibilityIncrement
和-(void)accessibilityDecrement
操作。对于日期选择器,您应该为每个组件(年,月,日)执行此操作 - 每个组件都是一个元素(用户可以通过向左和向右轻拂将VoiceOver光标移动到每个组件)并且每个组件都是可调整的(通过在VoiceOver光标打开时向上/向下轻拂。)
答案 1 :(得分:1)
您正在寻找可调节特性:UIAccessibilityTraitAdjustable
。
如果您在视图/单元格中指定此特征,则还必须在该视图/单元格中实现accessibilityIncrement
和accessibilityDecrement
。当用户用一根手指向上和向下滑动时,会调用这两种方法。
您无需亲自实现任何手势识别器。设置特征足以获得该行为(它还将添加“用一根手指向上或向下滑动......”描述)