ios 如何使基于表格视图的选择器控件可用于VoiceOver?

z4bn682m  于 2023-02-06  发布在  iOS
关注(0)|答案(2)|浏览(107)

我的应用程序中有一个基于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;,不实现可访问性动作方法。

hs1ihplo

hs1ihplo1#

你在寻找可调整的特质:UIAccessibilityTraitAdjustable.
如果你在你的视图/单元格中指定了这个特性,你也必须在那个视图/单元格中实现accessibilityIncrementaccessibilityDecrement,这是当用户用一个手指上下滑动时调用的两个方法。
不需要自己实现任何手势识别器,设置trait就足以获得那种行为(它还会添加"用一个手指向上或向下滑动..."的描述)

hc8w905p

hc8w905p2#

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

相关问题