Func textView(_ textView: UITextView, shouldInteractWith URL... не вызывается в iOS 14

У меня есть UITextView с делегатом.

Делегат реагирует на клики по URL-адресу следующим образом: textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction)

Это уже работает с iOS 11,12 и 13. Но это не работает на iOS 14. Кто-нибудь знает, что могло измениться?

Это прекрасно работает для всех остальных, поэтому ваша задача, задав свой вопрос, — предоставить достаточно информации, чтобы показать, как заставить его не работать. Предоставьте нам минимальный воспроизводимый пример, который мы можем использовать для воспроизведения того, что вы видите. Спасибо!

matt 11.12.2020 17:49
textView(_:shouldInteractWith:in:) (что устарело) или extView(_:shouldInteractWith:in:interaction:)? Можете ли вы воспроизвести свой пример?
Larme 11.12.2020 18:07

@Larme Я использую тот, который взаимодействует

Patrick_K 11.12.2020 18:09

Смотрите, я могу показать вам пример, который действительно работает. Но вы, вопрошающий, настаиваете на том, чтобы не показывать пример, который не работает. Это не лучший способ задать вопрос.

matt 11.12.2020 18:13

@matt Вы правы, я пока предоставил не так много информации. Но, как я уже сказал, все работает нормально до iOS 13, но не с iOS 14. Так что это не типичные проблемы с настройкой для делегатов textView. Сначала хотел узнать, была ли у кого-нибудь похожая проблема.

Patrick_K 11.12.2020 21:19

@Patrick_K Мы спрашиваем, пытались ли вы создать новый проект только с textView, ссылкой и делегатом. Можешь потом воспроизвести?

Larme 13.12.2020 14:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
3 067
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Что нужно иметь в виду:

  • Текстовое представление должно быть доступным для выбора и не редактируемым.

  • Текстовое представление dataDetectorTypes должно включать .link.

  • Контроллер представления (или кем бы вы ни были) должен принять UITextViewDelegate, а метод делегата должен быть методом верхнего уровня этого контроллера представления (а не внутри какого-либо другого метода).

  • Взаимодействие никогда не будет .preview (это мертвая буква).

поместите эти две строки в функцию viewDidload

textView.delegate = self
textView.isSelectable = true

и вышеуказанная функция работает у меня в ios 14.2

saqib kafeel 11.12.2020 18:27
Ответ принят как подходящий

Только что нашел решение этой проблемы. Но сначала спасибо за все ваши ответы. Специально от @matt и @Larme. Я создал пример для этой проблемы, но он сработал. Поэтому я сравнил со своим реальным проектом и нашел разницу. TextView находится внутри ячейки табличного представления. В моем реальном проекте он был добавлен непосредственно в ячейку, а не в представление содержимого.

Старый: cell.addSubview(textView)

Новое: cell.contentView.addSubview(textView)

Со старым подходом все работало нормально, кроме моей проблемы с не открывающимися ссылками в iOS14. Может быть, это может помочь кому-то в будущем.

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