UITextView可链接标签辅助功能配音问题

时间:2016-09-16 00:54:33

标签: ios swift uitextview accessibility voiceover

我有一个UITextView,部分文字是可点击的。链接工作。当我在iPhone的设置中打开辅助功能并打开Voice over时,会读出textview的文本,但链接不起作用。启用textview的故事板上的辅助功能,并在辅助功能属性下选择链接,并且在打开语音时链接不起作用。我也尝试将isAccessbilityElement = true添加到textview,结果没有运气。

UITextView被添加到表格视图的自定义单元格中。

提前感谢您的建议。

4 个答案:

答案 0 :(得分:1)

我没有解决方案。我还在找。

现在我在我的应用程序中使用UIWebview而不是UITextView。使用UIAccessiblity,UIWebview更有效。

答案 1 :(得分:1)

解决方案取决于您使用的 iOS 版本。对于 iOS 12。* 答案 https://stackoverflow.com/a/55144836/4600723 是正确的。

对于 iOS 13+,情况有点复杂,您需要在这里开箱即用。我发现设置 isEditable = true 并覆盖委托方法:

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
    false
}

(关闭结束)将提供您正在寻找的行为。

总的来说,从可访问性的角度来看,UITextView 确实有问题。

答案 2 :(得分:0)

您必须覆盖默认行为以选择UITextViews测试或您提供的链接。请参见此类UIAccessibilityElement。希望这对您有帮助

答案 3 :(得分:0)

该问题涉及必须在UITextView中激活链接时使用的specific VoiceOver gesture

我随后创建了一个包含代码片段的空白项目,以在myTextView元素中获得2个URL:

class TextViewURLViewController: UIViewController, UITextViewDelegate {

    @IBOutlet weak var myTextView: UITextView!

    let myString = "Follow this developers guide if you already know the VoiceOver gestures."
    let myDevURL = "https://a11y-guidelines.orange.com/mobile_EN/dev-ios.html"
    let myGesturesURL = "https://a11y-guidelines.orange.com/mobile_EN/voiceover.html"


    override func viewDidLoad() {

        let attributedString = NSMutableAttributedString(string: myString)

        attributedString.addAttribute(.link,
                                      value: myDevURL,
                                      range: NSRange(location: 12,
                                                     length: 17))

        attributedString.addAttribute(.link,
                                      value: myGesturesURL,
                                      range: NSRange(location: 52,
                                                     length: 19))

        myTextView.attributedText = attributedString
        myTextView.font = UIFont(name: myTextView.font!.fontName,
                                 size: 25.0)
    }


    func textView(_ textView: UITextView,
                  shouldInteractWith URL: URL,
                  in characterRange: NSRange,
                  interaction: UITextItemInteraction) -> Bool {

        UIApplication.shared.open(URL, options: [:])
        return false
    }
}

按照下面的步骤激活链接:

  1. 以适当的手势获取转子links项目。
  2. 用一根手指向上或向下滑动以访问链接。
  3. 双击并按住,直到您看到第4步上的屏幕

description of the first three steps

  1. 链接上方会显示一种弹出窗口。
  2. 一旦出现操作表,请向右轻拂以执行Open操作。
  3. 双击以打开URL并获得步骤7的最后一个屏幕。

description of the last three steps

唯一需要记住的是双击并按住直到弹出窗口出现在链接上方