如何使任意UIAccessibilityElement的行为类似于VoiceOver的UISwitch?

Jon*_*ams 3 accessibility ios voiceover

当使用VoiceOver选择本地开关时,公告将包含“关”或“开”,并带有附加提示“双击切换设置”。

我尝试使用可访问性trait UIAccessibilityTraitSelected,但这只会导致“ Selected”被宣布,除非我明确提供,否则没有任何提示。

使用Accessibility Inspector时,我还注意到本机UIKit开关1启用时具有accessibilityValue ,但是提供该设置不会改变VoiceOver的行为。

- (UIAccessibilityTraits)accessibilityTraits {
  if (toggled) {
    return UIAccessibilityTraitSelected;
  } else {
    return UIAccessibilityTraitNone;
  }
}

- (NSString*)accessibilityValue {
  if (toggled) {
    return @"1";
  } else {
    return @"0"
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以提供特征/值/标签的某种组合,以使TalkBack无需使用UISwitch即可将此元素识别为Switch?

jld*_*ley 7

我创建了一个可访问的视图,它在这里就像一个开关。

我能够获取任意元素以像Switch一样工作的唯一方法是在继承Switch的UIAccessibilityTraits时。这将使VoiceOver读取辅助功能值(01)为“关”或“开”,并添加提示“双击以切换设置”,并使VoiceOver说“切换按钮”。

您可以通过如下方式覆盖视图的可访问性来实现此目的:

override var accessibilityTraits(): UIAccessibilityTraits {
    get { return UISwitch().accessibilityTraits }
    set {}
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!