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

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

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

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

【问题讨论】:

    标签: ios objective-c accessibility voiceover uiaccessibility


    【解决方案1】:

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

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

    有四种方法可以实现:

    • accessibilityLineNumberForPoint:
    • accessibilityContentForLineNumber:
    • accessibilityFrameForLineNumber:
    • accessibilityPageContent

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

    【讨论】:

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