4

我们已经在我们的应用程序中为包含 UITextView 的自定义警报视图实现了画外音功能。这个 UITextView 有链接,我们还为链接添加了正确的 LinkAttributes。

在 iOS 12 中它工作正常,使用转子(垂直滑动)突出显示链接,但它在 iOS 13 中不起作用。我在文档中检查了很多,并花了 48 小时来找到根本原因,但没有成功。

我正在使用 Accessibility Inspector 调试我的应用程序,当我运行审核时,它表明 UITextView 的子视图不可访问,“可能无法访问的文本:该元素似乎显示应该使用辅助功能 API 实现的文本。”。

有没有其他人遇到过这个问题并有解决这个问题的方法。

提前致谢

4

2 回答 2

1

最近,我遇到了这个问题

在 iOS13 之前,应该设置 UITextView 画外音editable = NO,使用转子(垂直滑动)突出显示链接,它工作正常

但是在 iOS13 之后,你应该设置editable = YES,使用UITextViewDelegate textViewShouldBeginEditing:func 禁用键盘。

我认为这是 Voice Over 的错误

顺便说一下,UITextView 检测链接不流畅,你可以使用带有自定义辅助元素的 UILabel 来处理这种情况

于 2020-04-30T06:07:35.267 回答
1

问题示例代码:

class ViewController: UIViewController {
    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.isSelectable = true
        textView.dataDetectorTypes = .all

        let attributedString = NSMutableAttributedString(string: "Want to visit facebook?Want to visit google?")
        attributedString.addAttribute(.link, value: URL(string: "https://www.google.com")!, range: NSRange(location: 14, length: 8))
        attributedString.addAttribute(.link, value: URL(string: "https://www.facebook.com")!, range: NSRange(location: 36, length: 6))
        textView.attributedText = attributedString
    }
}

我要指出这是 iOS 13 的问题。iOS 12 按预期工作。建议的解决方法editable = YES和处理方法textViewShouldBeginEditing:适用于 VoiceOver,它修复了我们正在谈论的错误,但下一个问题是语音控制 + 显示数字功能 - 使用这种解决方法,链接的数字无法正常工作。

于 2020-09-18T10:00:25.817 回答