У меня есть UITextView
с делегатом.
Делегат реагирует на клики по URL-адресу следующим образом:
textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction)
Это уже работает с iOS 11,12 и 13. Но это не работает на iOS 14. Кто-нибудь знает, что могло измениться?
textView(_:shouldInteractWith:in:)
(что устарело) или extView(_:shouldInteractWith:in:interaction:)
? Можете ли вы воспроизвести свой пример?
@Larme Я использую тот, который взаимодействует
Смотрите, я могу показать вам пример, который действительно работает. Но вы, вопрошающий, настаиваете на том, чтобы не показывать пример, который не работает. Это не лучший способ задать вопрос.
@matt Вы правы, я пока предоставил не так много информации. Но, как я уже сказал, все работает нормально до iOS 13, но не с iOS 14. Так что это не типичные проблемы с настройкой для делегатов textView. Сначала хотел узнать, была ли у кого-нибудь похожая проблема.
@Patrick_K Мы спрашиваем, пытались ли вы создать новый проект только с textView, ссылкой и делегатом. Можешь потом воспроизвести?
Что нужно иметь в виду:
Текстовое представление должно быть доступным для выбора и не редактируемым.
Текстовое представление dataDetectorTypes
должно включать .link
.
Контроллер представления (или кем бы вы ни были) должен принять UITextViewDelegate, а метод делегата должен быть методом верхнего уровня этого контроллера представления (а не внутри какого-либо другого метода).
Взаимодействие никогда не будет .preview
(это мертвая буква).
поместите эти две строки в функцию viewDidload
textView.delegate = self
textView.isSelectable = true
и вышеуказанная функция работает у меня в ios 14.2
Только что нашел решение этой проблемы. Но сначала спасибо за все ваши ответы. Специально от @matt и @Larme. Я создал пример для этой проблемы, но он сработал. Поэтому я сравнил со своим реальным проектом и нашел разницу. TextView находится внутри ячейки табличного представления. В моем реальном проекте он был добавлен непосредственно в ячейку, а не в представление содержимого.
Старый: cell.addSubview(textView)
Новое: cell.contentView.addSubview(textView)
Со старым подходом все работало нормально, кроме моей проблемы с не открывающимися ссылками в iOS14. Может быть, это может помочь кому-то в будущем.
Это прекрасно работает для всех остальных, поэтому ваша задача, задав свой вопрос, — предоставить достаточно информации, чтобы показать, как заставить его не работать. Предоставьте нам минимальный воспроизводимый пример, который мы можем использовать для воспроизведения того, что вы видите. Спасибо!