我想使用TTTAttributedLabel来检测UITableViewCell标签中文本的链接,但它不起作用。我在iOS8上使用swift。下面是UITableViewCell代码:
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
}
}
}
答案 0 :(得分:12)
我认为您尚未正确配置custom cell
。
第一次声明并连接您的IBOutlet
- s。选择textLabel并将其类添加到TTTAttributedLabel
。您的自定义单元格应如下所示:
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
}
}
第二次您需要在使用tableView数据源和委托的类中添加TTTAttributedLabelDelegate
。
然后在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
然后,如果您有需要从TTTAttributedLabelDelegate
执行的方法,请添加它们并进行计算。
希望有所帮助
答案 1 :(得分:3)
如果您已将TTTAttributedLabel设置为UILabel的类,在笔尖或情节提要板中,请确保已启用用户交互设置为true,因为默认情况下UILabel将禁用用户交互
答案 2 :(得分:0)
let linkColor = UIColor.blueColor()
let linkActiveColor = UIColor.greenColor()
textLabel.delegate = self
textLabel.linkAttributes = [kCTForegroundColorAttributeName : linkColor.CGColor,kCTUnderlineStyleAttributeName : NSNumber(bool: true)]
textLabel.activeLinkAttributes = [NSForegroundColorAttributeName : linkActiveColor]
textLabel.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue
答案 3 :(得分:0)
迅捷4.2 label.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue | NSTextCheckingResult.CheckingType.phoneNumber.rawValue
答案 4 :(得分:0)
最后对我没有任何帮助,我在commonInit()方法中将以下代码放在TTTAttributedLabel.m中
self.enabledTextCheckingTypes = NSTextCheckingTypeLink;