我已经搜索得足够多,并尝试了所有我能做到的但未能得到解决方案。
我UITextView
内有UITableViewCell
。 textView
为notEditable
。对于scrolling enabled
,false
属性设置为autoResizing
。
textView
填充了attributedText
,该NSAttributedString
从html
转换为hyperlinks
,并且有一些link
。因此,我将data detector
的{{1}}属性设置为true
,以便textView
可以检测链接点击。
现在主要问题是我需要didSelect
tableView
事件才能将用户带到新屏幕,但由于textView
我无法获取该事件链接检测。
这是我填充tableView
的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "AdvertisementCell", for: indexPath) as! AdvertisementCell
cell.delegate = self
cell.setupCellData(model: advertiseMentModel!)
return cell
}
Inside Cell子类:
func setupCellData(model : TSLatestDetailsModel) {
if let desc = model.blurb_link {
let attrString = NSMutableAttributedString(attributedString: desc.html2AttributedString!)
attrString.addAttributes([NSAttributedStringKey.font : UIFont(name: "Helvetica-Light", size: 17)!], range: NSMakeRange(0, attrString.length))
txtVwDesc.attributedText = attrString
if !isSearchResults {
txtVwDesc.textContainerInset = UIEdgeInsets(top: 0, left: -5, bottom: -32.5, right: 0)
} else {
txtVwDesc.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
txtVwDesc.linkTextAttributes = [NSAttributedStringKey.foregroundColor.rawValue: Constants.linkColor,
NSAttributedStringKey.underlineColor.rawValue : UIColor.clear,
NSAttributedStringKey.font.rawValue : UIFont(name: "Helvetica-Light", size: 17)!]
layoutIfNeeded()
}
}
请说明解决问题的最佳方法是什么?
答案 0 :(得分:0)
确保以下内容:您已将tableview委托设置为self,并且已为单元格,内容视图和文本视图启用了用户交互,并且已将该类分配给属性检查器中的tableView。
答案 1 :(得分:0)
尝试创建一个背景清晰的UIview,其中包含您不想点击的文字。它仍会检测到你的didSelectRow