gpt4 book ai didi

ios - 在 ASTextNode AsyncDisplayKit 中检测链接或 URL

转载 作者:可可西里 更新时间:2023-11-01 17:04:56 34 4
gpt4 key购买 nike

我一直在尝试使用 AsyncDisplayKit 框架,我需要检测文本中的 url。

我使用过 ASTextNode 但找不到任何检测链接的 api。

我读到有属性 linkAttributeNames 用于 url 检测,但找不到任何示例如何做。

有人可以帮助我如何使用上面的类吗?

谢谢

最佳答案

对于 Swift 3.0

func addLinkDetection(_ text: String, highLightColor: UIColor, delegate: ASTextNodeDelegate) {
self.isUserInteractionEnabled = true
self.delegate = delegate

let types: NSTextCheckingResult.CheckingType = [.link]
let detector = try? NSDataDetector(types: types.rawValue)
let range = NSMakeRange(0, text.characters.count)
if let attributedText = self.attributedText {
let mutableString = NSMutableAttributedString()
mutableString.append(attributedText)
detector?.enumerateMatches(in: text, range: range) {
(result, _, _) in
if let fixedRange = result?.range {
mutableString.addAttribute(NSUnderlineColorAttributeName, value: highLightColor, range: fixedRange)
mutableString.addAttribute(NSLinkAttributeName, value: result?.url, range: fixedRange)
mutableString.addAttribute(NSForegroundColorAttributeName, value: highLightColor, range: fixedRange)

}
}
self.attributedText = mutableString
}
}

将委托(delegate)添加到您的 viewController:

/// Delegate function for linkDetection
func textNode(_ textNode: ASTextNode, shouldHighlightLinkAttribute attribute: String, value: Any, at point: CGPoint) -> Bool {
return true
}

func textNode(_ textNode: ASTextNode, tappedLinkAttribute attribute: String, value: Any, at point: CGPoint, textRange: NSRange) {
guard let url = value as? URL else { return }
}

关于ios - 在 ASTextNode AsyncDisplayKit 中检测链接或 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549214/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com