首页 文章

如何使VoiceOver可以访问基于表视图的选择器控件?

提问于
浏览
0

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

示例:enter link description here现在我想让我的应用VoiceOver与朋友兼容 . 但是这种控制,我很难让它发挥作用 .

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

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

我读了Matt Gammell's VoiceOver guide,在那里,他必须说明控件不是你应该做的 .

所以我推断这是一个特殊的特性,用于可以向上或向下滑动以调整 Value 的东西 . 但我找不到这样的特质 .

由于UIPickerView基于UITableViews,Apple如何使其与VoiceOver一起使用?我必须使用手势识别器进行轻弹吗?

EDIT:

我在UITableView子类上设置可调特性,如下所示:

self.isAccessibilityElement = YES;
self.accessibilityLabel = @"Start date.";
self.accessibilityTraits = UIAccessibilityTraitAdjustable;

表视图实现

- (void)accessibilityIncrement {
    NSLog(@"accessibilityIncrement");
}

- (void)accessibilityDecrement {
    NSLog(@"accessibilityDecrement");
}

现在我可以拖过单元格,VoiceOver会读取标签并用黑色矩形标记它们 . 但是表视图不会滚动,上面的方法也不会被调用 .

单元格本身是 isAccessibilityElement = NO; 并且不实现可访问性操作方法 .

2 回答

  • 1

    您正在寻找可调节的特性: UIAccessibilityTraitAdjustable .

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

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

  • 1

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

相关问题