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