TextKit 和旁白
Posted
技术标签:
【中文标题】TextKit 和旁白【英文标题】:TextKit and VoiceOver 【发布时间】:2014-05-05 00:01:25 【问题描述】:我一直在关注 ios7 Day-by-Day 多页 TextKit 教程,但遇到了可访问性问题。教程代码在这里:iOS7 Day-by-Day
问题是每个文本视图(每列一个,每个“页面”两个)似乎包含整个字符串,并且启用 VoiceOver 时,每次一列获得焦点时,都会从最从字符串的开头到最后,而不是读取列中实际可见的文本。
textviews/columns 是使用新的 iOS7 方法创建的
UITextView *textView = [[UITextView alloc] initWithFrame:textViewFrame
textContainer:textContainer];
如何让 VoiceOver 只读取每列中的可见文本?
【问题讨论】:
【参考方案1】:听起来您只需要确定哪些文本是可见的,然后将其传递给 VoiceOver。
为此,您可以使用two possible methods found in this related question 和可见文本的范围you can then create a substring,例如:
NSString *textToPassToVoiceOver = [[textView.text] rangeOfSubstring:visibleTextRange];
有道理吗?
【讨论】:
有点。在计算了如何将其放入列和文本容器中之后,必须再次计算文本的可见范围是不是有点奇怪?另外,如何将子字符串传递给 VoiceOver?这是否意味着我必须手动为每个 textview 设置accessibility.label?这一切都感觉像是一种解决方法。为什么不简单地将 textviews 文本属性设置为它所代表的文本容器?以上是关于TextKit 和旁白的主要内容,如果未能解决你的问题,请参考以下文章
NSTextAttachment 使用 textkit 时覆盖文本
如何使用 TextKit(不是 NSAttributedStrings)在 UITextView 中获取属性信息