iosuitableviewswiftios8tttattributedlabel

TTTAttributedLabel Link detecting not work in iOS8 with swift


I want to use TTTAttributedLabel to detect the link of the text in the Label of UITableViewCell, but it doesn't work. I'm using swift with iOS8. below is UITableViewCell code:

class StoryTableViewCell: UITableViewCell, TTTAttributedLabelDelegate {
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

        // Link properties
        let textLabel = self.descriptionLabel
        let linkColor = UIColor(red: 0.203, green: 0.329, blue: 0.835, alpha: 1)
        let linkActiveColor = UIColor.blackColor()

        if (textLabel is TTTAttributedLabel) {
            var label = textLabel as TTTAttributedLabel
            label.linkAttributes = [NSForegroundColorAttributeName : linkColor]
            label.activeLinkAttributes = [NSForegroundColorAttributeName : linkActiveColor]        
            label.enabledTextCheckingTypes = NSTextCheckingType.Link.toRaw()

            label.delegate = self
        }
    }
}

Solution

  • I think you have not configured your custom cell correctly.

    First at your customCell declare and connect your IBOutlet-s. Select your textLabel and add its class to TTTAttributedLabel. Your custom cell should look like this:

    class StoryTableViewCell: UITableViewCell {
        @IBOutlet weak var textLabel: TTTAttributedLabel!
    
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
    
        override func setSelected(selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
    
            // Configure the view for the selected state
        }
    }
    

    Second you need to add the TTTAttributedLabelDelegate at the class where you are using the tableView datasource and delegate.

    Then under cellForRowAtIndexPath

    var cell: StoryTableViewCell = tableView.dequeueReusableCellWithIdentifier("yourCellIdentifier") as StoryTableViewCell
    
    let linkColor = UIColor(red: 0.203, green: 0.329, blue: 0.835, alpha: 1)
    let linkActiveColor = UIColor.blackColor()
    
    cell.textLabel.delegate = self
    
    cell.textLabel.linkAttributes = [kCTForegroundColorAttributeName : linkColor]
    cell.textLabel.activeLinkAttributes = [kCTForegroundColorAttributeName : linkActiveColor]        
    cell.textLabel.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue
    

    Then if you have methods that need to be executed from TTTAttributedLabelDelegate add them and do your calculations.

    Hope it helps