Создайте пользовательские теги в UITextView и сделайте их доступными [Swift] - PullRequest
0 голосов
/ 04 апреля 2020

В моем приложении, что-то вроде 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...