【问题标题】:ios voiceover for UITableView sectionsUITableView部分的ios画外音
【发布时间】:2014-07-10 10:37:35
【问题描述】:

有没有什么方法可以避免 UITableView 的部分标题在阅读部分文本后在画外音模式下说“标题”?我在 viewForHeaderInSection: 中提供自定义视图。对于我在 viewForHeaderInSection 中返回的自定义视图,我已尝试将 isAccessibilityElement 设置为 NO,将 accessibilityTraits 设置为 UIAccessibilityTraitNone。但我无法在画外音模式下抑制标注“标题”。例如如果我将部分中的标签设置为“日期”,它将被读出为日期“暂停”标题。

我需要这样做的原因是某些部分只是具有 0 行的自定义消息,它们并不是任何类型的真正标题。我不想将它们作为一个部分中的行。

【问题讨论】:

  • 如果某些标题不是标题,请不要将它们声明为标题。为什么他们不应该在一个部分内。你可以有没有标题的部分。
  • @dasdom - 您能否详细说明 - “不要将它们声明为标题”?我在 viewForSection 中返回的 UIView 只有一个带有文本“日期”的 UILabel 子视图。但在画外音中,它被读作“日期标题”。是否有一些我需要设置的属性。
  • 不,我的意思是制作实际上不是标题行的标题并将它们放在没有标题的部分中。
  • 我明白你在说什么,但我没有选择将它们作为行,它需要太多的改变。我只是在寻找一种方法来抑制标题标注

标签: ios uitableview accessibility voiceover


【解决方案1】:

回答我的问题以记录我采用的解决方案。使用了实现 UIAccessibilityContainer 并在 viewForHeaderInSection 中返回的自定义视图。实现了协议中的三个方法,仅将视图中的标签标记为可访问性元素。这是我可以让该部分不在标签画外音读出末尾附加“标题”的唯一方法。

【讨论】:

  • 你能分享你使用的 UIAccessibilityContainer 代码吗?
  • @Kedar:你能提供解决这个问题的代码吗?不幸的是,我认为您的解决方案只有在需要滚动时没有构建其他部分标题时才有效。如果不是这样,我想知道为什么。 ;o)
【解决方案2】:

您可以在您的自定义视图中实现accessibilityElementDidBecomeFocused 方法,当该视图确实成为焦点并将UIAccessibilityLayoutChangedNotification 发布到VoiceOver 并聚焦到自身,然后返回特征UIAccessibilityTraitNone

- (void)accessibilityElementDidBecomeFocused {
       UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,   self);
}

- (UIAccessibilityTraits)accessibilityTraits {
    return UIAccessibilityTraitNone;
}

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2012-06-14
    • 2014-11-27
    • 2010-11-06
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多