0

我的应用程序中有一个基于 UITableView 的选择器控件。用户可以滚动表格视图,中间的标记会显示所选项目。每个可选项目都是一个表格视图单元格。

示例:在此处输入链接描述 现在我想让我的应用 VoiceOver 与朋友兼容。但是这个控件,我很难让它工作。

启用 VoiceOver 后,我无法滚动表格视图来选择其他元素。我查看了时钟应用程序中的选择器视图。它也不滚动。但是当您向上或向下滑动时,它会跳转到下一个或上一个值。它说

“用一根手指向上或向下滑动以调整值”。

我阅读了Matt Gammell 的 VoiceOver 指南,他说提示必须说明控件不应该做什么。

所以我推断这是他们用于可以向上或向下滑动以调整值的东西的特殊特征。但我找不到这样的特质。

既然 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;并且不实现可访问性操作方法。

4

2 回答 2

1

您将 添加UIAccessibilityTraitAdjustable到元素的特征中。然后执行-(void)accessibilityIncrementand-(void)accessibilityDecrement操作。对于日期选择器,您应该为每个组件(年、月、日)执行此操作 - 每个组件都是一个元素(用户可以通过左右滑动将 VoiceOver 光标移动到该元素)并且每个组件都是可调整的(在 VoiceOver 光标位于其上时向上/向下轻弹)。

于 2013-07-25T20:30:41.193 回答
1

您正在寻找可调整的特征:UIAccessibilityTraitAdjustable.

如果您在视图/单元格上指定此特征,您还必须在该视图/单元格中实现accessibilityIncrementaccessibilityDecrement。这是当用户用一根手指上下滑动时调用的两种方法。

无需自己实现任何手势识别器。设置特征足以获得该行为(它还将添加“用一根手指向上或向下滑动......”描述)

于 2013-07-25T20:30:50.647 回答