Настраиваемое строковое действие в Swift - PullRequest
0 голосов
/ 30 мая 2019

Я хочу сделать атрибутивное строковое действие быстрым. Я хочу добавить свою пользовательскую переменную в данные ячейки табличного представления.

Я добавил цвет и строку также для этой строки, теперь я хочу добавить ссылку для этой добавленной строки.

Пожалуйста, найдите мой код со следующим.

Я добавляю этот код в ячейку для строки в пути индекса.

 let value = NSMutableAttributedString(string: " tap here.", attributes:[NSAttributedStringKey.link: URL(string: "http://www.google.com")!]).withTextColor(UIColor.disSatifyclr).withUnderlineColor(UIColor.disSatifyclr).withUnderlineStyle(.styleSingle)

        if (cell.desclbl.text?.contains("more about donating, "))! {
            let description = descriptions[indexPath.section][indexPath.row]
            let attributedString = NSMutableAttributedString(string: description)
            attributedString.append(value)


            cell.desclbl.attributedText = attributedString
        }

1 Ответ

0 голосов
/ 30 мая 2019

Здесь вы можете обрабатывать действие, используя UITextView вместо UILabel при нажатии на строку

class ViewController: UIViewController, UITextViewDelegate {
    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.attributedText = prepareLink()
        textView.tintColor = UIColor.black
        textView.isSelectable = true
        textView.isEditable = false
        textView.delegate = self
    }

    func prepareLink() -> NSMutableAttributedString {
        let formattedString = NSMutableAttributedString(string: " tap here ")
        let linkAttribute = [
            NSAttributedString.Key.foregroundColor: UIColor.green,
            NSAttributedString.Key.underlineColor: UIColor.green,
            NSAttributedString.Key.underlineStyle: 1,
            NSAttributedString.Key.link: URL(string: "http://www.google.com")!
            ] as [NSAttributedString.Key : Any]

        formattedString.addAttributes(linkAttribute, range: NSMakeRange(0, formattedString.length))
        return formattedString
    }

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

        if (URL.absoluteString == "http://www.google.com") {
            // Do Something
        }
        return true
    }
}

Примечание. Если вам нужно продолжить работу с UILabel, вам нужно реализовать UITapGesture для обработки действия.

...