gpt4 book ai didi

ios - 如何使 UITextView 检测到文本中的链接部分并且仍然有 userInteractionDisabled?

转载 作者:可可西里 更新时间:2023-11-01 03:13:17 30 4
gpt4 key购买 nike

我有一个在 tableView 单元格上分层的 textView。我需要用户点击 tableView 行来打开一个 viewController,但是如果 textView 有一个链接,它必须是可点击的,就是这样,没有复制,选择等。

如果我允许这样的用户交互:

textView.userInteractionEnabled=NO;
textView.dataDetectorTypes =UIDataDetectorTypeLink;

didSelectRowAtIndexPath 没有被调用,我明白为什么但如何实现这个?

编辑:

我正在寻找的是能够专门识别链接并允许用户单击链接以打开浏览器并禁用其余 textView 的交互。如上所述,整行也应该是可点击的。

附件是我的 tableView 单元格行的图像,它显示检测到链接并且也可以进行交互,但这会禁用 textView 区域内的 didSelectRowAtIndexPath

enter image description here

最佳答案

如果您尝试添加一个带有单元格链接的 UITextView,并希望在用户点击链接以外的任何内容时调用 didSelectRow,那么您应该使用 hitTest:withEvent :

swift 3

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
// location of the tap
var location = point
location.x -= self.textContainerInset.left
location.y -= self.textContainerInset.top

// find the character that's been tapped
let characterIndex = self.layoutManager.characterIndex(for: location, in: self.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
if characterIndex < self.textStorage.length {
// if the character is a link, handle the tap as UITextView normally would
if (self.textStorage.attribute(NSLinkAttributeName, at: characterIndex, effectiveRange: nil) != nil) {
return self
}
}

// otherwise return nil so the tap goes on to the next receiver
return nil
}

我写了一个 article有关此的更多详细信息。

关于ios - 如何使 UITextView 检测到文本中的链接部分并且仍然有 userInteractionDisabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21015069/

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