我可以影响 VoiceOver 转子中显示的内容吗?

Posted

技术标签:

【中文标题】我可以影响 VoiceOver 转子中显示的内容吗?【英文标题】:Can I influence what appears in the VoiceOver rotor? 【发布时间】:2014-04-01 17:41:45 【问题描述】:

我有一个基于文本的应用程序,我希望我的用户在启用 VoiceOver 时使用“线条”转子选项。但是该选项没有出现。我的应用程序中的文本使用表格视图中的单元格进行布局(单元格包含 UILabel 和其他视图)。

我担心我的实现会影响转子“查看”我的应用程序的方式,但如果它限制了我完全支持转子,我认为很遗憾。

有什么方法可以使用转子中的“线”选项吗?

【问题讨论】:

【参考方案1】:

我认为您正在寻找UIAccessibilityReadingContent 协议。

UIAccessibilityReadingContent 协议可以在一个对象上实现,该对象表示打算由用户阅读的内容,例如一本书或一篇文章。

有四种方法可以实现:

accessibilityLineNumberForPoint: accessibilityContentForLineNumber: accessibilityFrameForLineNumber: accessibilityPageContent

您将不得不弄清楚如何将文本剪切成行、每行的框架以及某个点属于哪一行(命中测试),但是由于您使用的是表格视图,因此您应该能够挂钩细胞的框架来找出那些东西。

【讨论】:

这当然是我要找的。不幸的是,使用标准 UIKit 组件计算行号、行帧等似乎很痛苦。 CoreText 或 TextKit 似乎可行,但这需要我完全重新设计我的实现。欢迎好主意:) @Miki 你不是每行都使用一个表格视图单元格吗? 不,每个文本部分一个 tableviewcell。目前我使用 UILabels,每行都有多行文本。例如,我可以相对轻松地切换到 UITextViews。我认为这会更容易一些,因为我可以访问 TextKit(我只支持 ios 7 及更高版本)。 我已将其作为一个单独的问题提出(已经弄清楚了其中一些问题):***.com/questions/22807959/…

以上是关于我可以影响 VoiceOver 转子中显示的内容吗?的主要内容,如果未能解决你的问题,请参考以下文章

创建自定义 VoiceOver 转子来导航 MKAnnotationViews?

如何将自定义视图添加到 iOS VoiceOver 转子?

iOS VoiceOver“找不到标题”

我可以在 UIWebView 中解决这个 iOS 8 Voiceover 错误吗?

如何为 VoiceOver AccessibilityLabel 设置 Apple Watch 标题

如何为 tableview 上的 webview 内容启用 VoiceOver