【问题标题】:VoiceOver in UITextView: read paragraph at a timeUITextView 中的 VoiceOver:一次读取段落
【发布时间】:2018-01-16 15:58:49
【问题描述】:

我正在为视障人士开发报纸、杂志和书籍阅读应用程序。该应用程序的用户希望 VoiceOver 一次读取一个段落的 UITextField 中的文本,而不是一口气读取所有内容。这如何实现?

【问题讨论】:

  • stackoverflow.com/questions/35446459/… ?寻找UIAccessibilityContainer,这似乎是解决方案。
  • 是的,我看到了那个帖子,但我觉得答案太模糊了。
  • “利用 UIAccessibilityContainer 协议”确实完全回答了“如何实现?”的问题。也许是你的问题太模糊了。 ;)

标签: ios uitextview voiceover


【解决方案1】:

这其实很简单。每当您有新段落时,请使用新的UITextField 视图。这会导致“默认”行为一次扫描一段文本,这是非常直观的。同时仍然允许“逐行”转子设置一次作为一条线运行。 UIAccessibilityReadingContent 协议无法解决的问题。

注意:实现与多个UITextFields 相同效果的另一种方法是利用UIAccessibilityContainer 协议通过 VoiceOver 创建仅合成辅助功能视图的场景。将您的一个较大的 UITextField 容器转换为多个 UIAccessibilityElements 以方便访问。

但是,如果您有分页行为,您应该使用此协议的分页功能。这将允许用户一次一页地阅读您的多个UITextFields 的集合。

总而言之,这种方法允许用户:

  • 一次阅读一页(通过使用UIAccessibilityReadingContent
  • 一次阅读一个段落(默认行为,每个 UITextField 一个段落)
  • 一次读取一行(转子:逐行)
  • 此外,其他转子设置(字和字符)

对我来说似乎很可靠!

【讨论】:

  • 您的解决方案看起来确实可行。因为我还需要跟踪和记住 tts 被中断的位置,并且还需要直接添加控件(意味着不是通过 iOS 设置)更改 tts 参数(速度等),所以我将不得不使用 AVSpeechSynthesizer 而不是依赖内置的-在旁白中。
  • VoiceOver 用户可以更改读出速度。这是内置的 VoiceOver 功能。只有在普通客户也会使用 AVSpeechSynthesizer 时才使用它 切勿使用 AVSpeechSynthesizer 来覆盖默认的辅助功能。这是一罐讨厌的蠕虫。在我看来,您(或您的测试团队)也可以更彻底地熟悉 VoiceOVer。您尝试解决的许多“核心问题”(阅读字里行间)都是 VoiceOver 默认执行的操作,前提是您了解如何正确使用它。
  • 如果我错了,请纠正我,但据我了解,您不能在您的应用程序中放置一个可以改变 VoiceOver 读出速度的控件——这必须在 iOS 设置中完成。我的客户希望从应用程序直接控制。使用内置 VoiceOver 也无法跟踪读出进度——这也是我的客户必备的。
  • 仅仅因为您的客户想要它,并不意味着它是一个好主意。您的客户已正确识别 VoiceOver 用户在使用此类应用程序时可能遇到的问题。他们未能确定的是,VoiceOver 的高级设置已经解决了这些问题,并且从 VoiceOver 用户的角度来看,用 App 中的废话覆盖这些设置绝对不是正确的做法。有关可访问性,请参阅我的个人资料以获取我的凭据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多