Я хочу знать, как сделать текст кликабельным и воспроизводить звук при нажатии на определенный текст.
Мне нужно определить, какиефраза была нажата, воспроизводить звук при нажатии на эту фразу и изменить цвет этой конкретной фразы.
Это функция, когда я создаю историю и назначаю ее UITextView
func showStory(){
var ph:String?
var s:String = ""
var index = 0
for phrase in phrasesArray {
ph = phrase
let data = ph!.data(using: String.Encoding.utf8)
do{
let txt = try NSAttributedString(data: data!,
options: [.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
s = txt.string
let attributedString = NSMutableAttributedString(string: s, attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 14) , NSAttributedStringKey.link: audioArray[index]])
attributedText.append(attributedString)
index += 1
}catch{}
fullStory.attributedText = attributedText
}
}
И это когда я обрабатываю, если пользователь касается UITextView
func textView(_ textView: UITextView, shouldInteractWith audio: URL, in characterRange: NSRange) -> Bool{
//This is not working
attributedText.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: characterRange)
let soundFile = Bundle.main.url(forResource: audio.absoluteString, withExtension: "mp3")
do{
try sound = AVAudioPlayer(contentsOf: soundFile!)
sound.prepareToPlay()
}catch{
print(error)
}
sound.play()
return false
}