У меня есть 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
работает, но может кто-нибудь помочь мне здесь? Застрял здесь ...