İçeriğe geç

UITextView ile kelimelere aksiyon vermek

Merhabalar bu yazımda iOS ile uygulama yazarken paragrafların içerisindeki istenilen kelimelere tıklama aksiyonu oluşturmayı göstereceğim.

Bu işlemi UITextView kullanarak gerçekleştireceğiz. UILabel kullanarakta bu işlemi yapabiliriz ancak UITextView ile daha sorunsuz gerçekleşmekte.

Yukardaki yapıyı elde etmek için aşağıda yazdığım UITextView extension fonksiyonunu inceleyebilirsiniz.

extension UITextView {
    func hyperLink(originalText: String, hyperLinks: [String], urlStrings: [String], font:UIFont, linkColor:UIColor? = nil) {
        let attributedOriginalText = NSMutableAttributedString(string: originalText)
        for i in 0..<hyperLinks.count where hyperLinks.count == urlStrings.count {
            let linkRange = attributedOriginalText.mutableString.range(of: hyperLinks[i])
            let fullRange = NSMakeRange(0, attributedOriginalText.length)
            attributedOriginalText.addAttribute(.link, value: urlStrings[i], range: linkRange)
            attributedOriginalText.addAttribute(.font, value: font, range: fullRange)
            attributedOriginalText.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: linkRange)
        }
        self.tintColor = linkColor ?? .blue
        self.attributedText = attributedOriginalText
    }
}

Kullanımı:

subtitleSecondTextView.hyperLink(originalText: "iOS & Swift Blog -> kenanatmaca.com", hyperLinks: ["kenanatmaca.com"], urlStrings: ["web://kenanatmaca.com"], font: UIFont.systemFont(ofSize: 17), linkColor: .green)

Aksiyonları yakalamak için UITextView delegate fonksiyonunu kullanmamız gerekli.

extension UIViewController: UITextViewDelegate {
    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
        let parseUrl = URL.absoluteString.components(separatedBy: "://")
        print(parseUrl) // [web, kenanatmaca.com]
        return false
    }
}

Tetiklediğimiz delegate içerisindeki URL parçalayarak istediğiniz gibi aksiyonlarınızı kolay bir şekilde yönetebilirsiniz.

Tarih:iOS

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2021 Kenan Atmaca