iOS 13 Проблема озвучивания, ротор не работает со встроенными ссылками

Мы реализовали функцию озвучивания в нашем приложении для настраиваемого представления предупреждений, которое содержит UITextView. Этот UITextView содержит ссылки, и мы также добавили правильные атрибуты LinkAttributes для ссылок.

в iOS 12 он работает нормально, с использованием ротора (вертикальное смахивание) для выделения ссылок, но он не работает в iOS 13. Я много проверил в документации и потратил 48 часов на это, чтобы найти основную причину, но безуспешно.

Я отлаживал свое приложение с помощью Accessibility Inspector, и когда я запускал Audit, он предполагал, что подпредставления UITextView недоступны: "Потенциально недоступный текст: элемент отображается для отображения текста, который должен быть реализован с использованием API специальных возможностей".

Кто-нибудь еще сталкивался с этой проблемой и нашел решение этой проблемы.

Заранее спасибо

1 ответ

Недавно , столкнулся с этой проблемой

до iOS13 голосовое сопровождение UITextView должно быть установлено editable = NO, используя ротор (вертикальное смахивание), чтобы выделить ссылки, он отлично работает

Но после iOS13 вы должны установить editable = YES, с помощью UITextViewDelegate textViewShouldBeginEditing: func, чтобы отключить keyBoard.

Я думаю, это ошибка Voice Over

Между прочим, ссылка обнаружения UITextView не работает плавно , вы можете использовать UILabel с настраиваемыми элементами доступности для обработки ситуации

Пример кода проблемы:

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, который исправляет ошибку, о которой мы говорим, но следующая проблема - функция "Голосовое управление + отображение чисел" - при этом обходном пути номера для ссылок не работают должным образом.

Другие вопросы по тегам