В моем приложении, что-то вроде instagram, я создал текстовое представление, которое распознает пользовательские теги (например, @instagram) и устанавливает их фон в фиолетовый, но я хочу сделать их интерактивными. Вот что я done
Когда я нажимаю на тег @mario, я хочу вызвать функцию @ obj c, которая pu sh viewController для его профиля и то же самое для @jack. Теперь я знаю, как просмотреть sh контроллер, но я не знаю, как добавить целевую функцию. Вот что я попробовал:
func addRecognizer() {
if let selectedRange = selectedTextRange {
let cursorOffset = offset(from: beginningOfDocument, to: selectedRange.start)
let attString = NSMutableAttributedString(string: text ?? "")
if let text = text {
let index = text.index(text.startIndex, offsetBy: cursorOffset)
let substring = text[..<index]
let nsSting = NSString(string: text)
let words = substring.components(separatedBy: .whitespaces)
for word in words {
if word.hasPrefix("@") {
let wordRange = nsSting.range(of: word)
attString.addAttribute(.backgroundColor, value: UIColor.purple, range: wordRange)
attString.addAttributes([linkKey : word], range: wordRange)
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(singleTap(_:))))
tags.append(word)
}
}
attributedText = attString
}
}
}
Таким образом, жест касания относится ко всему textView.