Сделайте часть текста в UITextView интерактивной - PullRequest
0 голосов
/ 03 марта 2020

У меня есть UITextView, и внутри него должно быть 2 слова, которые можно нажимать. Я попробовал это с NSMutableAttributedString` как это:

TextView:

let documentsTextView: UITextView = {
    let v = UITextView()
    v.isEditable = false
    v.backgroundColor = .clear
    v.textAlignment = .center
    v.font = UIFont(name: "AvenirNext-Regular", size: 13)
    v.textColor = .lightGray
    v.translatesAutoresizingMaskIntoConstraints = false
    return v
}()

attributedText:

documentsTextView.delegate = self

    let attributedString = NSMutableAttributedString(string: "Durch Klicken auf 'Registrieren' akzeptiere ich die Nutzungsbedingungen und die Datenschutzrichtlinien.")
    attributedString.addAttribute(.link, value: "Nutzungsbedingungen", range: NSRange(location: 52, length: 19))
    attributedString.addAttribute(.link, value: "Datenschutzrichtlinien", range: NSRange(location: 80, length: 22))

    documentsTextView.attributedText = attributedString

и мой shouldInteractWith - метод:

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {

    if URL.absoluteString == "Nutzungsbedingungen" {
        print("nutzung")
    }else if URL.absoluteString == "Datenschutzrichtlinien" {
        print("daten")
    }

    return true
}

Но в данный момент Xcode выдает это сообщение об ошибке при нажатии на любую из двух строк:

Не удалось открыть URL Datenschutzrichtlinien: Ошибка домена = NSOSStatusErrorDomain Код = -50 «Недопустимые параметры ввода» UserInfo = {NSDebugDescription = недопустимые параметры ввода, _LSLine = 252, _LSFunction = - [_ LSDOpenClient openURL: параметры: завершениеHandler:]}

Другое дело, что тексты font, size и др. c. это не то, что я на самом деле определяю в моем documentsTextView, а просто стандартный шрифт, размер и т. д. c ...

Полагаю, у меня неправильное представление о том, как TextViews работает, но может кто-нибудь помочь мне здесь? Застрял здесь ...

...