使用VoiceOver选择本机开关时,通知将包含“关闭”或“开启”,并附加提示“双击以切换设置” .
我已经尝试使用辅助功能特性 UIAccessibilityTraitSelected
,但这只会导致"Selected"被宣布,没有提示,除非我明确提供一个 .
使用辅助功能检查器我还注意到,启用时,本机UIKit交换机的accessibilityValue为 1
,但提供的不会改变VoiceOver行为 .
- (UIAccessibilityTraits)accessibilityTraits {
if (toggled) {
return UIAccessibilityTraitSelected;
} else {
return UIAccessibilityTraitNone;
}
}
- (NSString*)accessibilityValue {
if (toggled) {
return @"1";
} else {
return @"0"
}
}
是否可以提供特征/值/标签的某种组合,以便TalkBack将此元素识别为Switch,而不使用UISwitch?
2 回答
您可以创建一个自定义辅助功能元素,其行为类似于UISwitchControl,可以随心所欲 . 唯一需要指出的是VoiceOver应该解释它的方式 .
假设你想收集
label
和view
被视为一个开关控件 .首先, create a class for grouping these elements 成一个:
然后,在你的
viewDidAppear()
中只需 create your custom view :最后,要使自定义视图像开关控件一样,只需覆盖
WrapView
类中的accessibilityActivate
函数,即可在双击视图时实现逻辑:现在你有了一个自定义元素,它包含你想要的任何东西,对于使用VoiceOver而不使用UISwitch的盲人来说,它就像一个开关控件 .
我创建了一个可访问的视图,其作用类似于交换机here .
在继承Switch的UIAccessibilityTraits时,我能够让任意元素像Switch一样工作的唯一方法 . 这会导致VoiceOver读取辅助功能值(
0
或1
)为"Off"或"On,"添加提示"Double tap to toggle setting",并使VoiceOver说"Switch Button."您可以通过覆盖视图的辅助功能特性来执行此操作,如下所示:
希望这可以帮助!