如何在 Swift 中制作一个单词可点击的 UITextView?

Posted

技术标签:

【中文标题】如何在 Swift 中制作一个单词可点击的 UITextView?【英文标题】:How to make a word clickable UITextView in Swift? 【发布时间】:2019-04-26 10:15:49 【问题描述】:

有没有办法创建一个可以点击单词的UITextView

当我单击单词时,单词将突出显示。请参考下图。

【问题讨论】:

是的,有可能,但你怎么知道哪个词是可点击的? 使用 UITapGestureRecognizer 我可以找到被点击的单词的位置,然后计算文本范围,最后得到具有该文本范围的单词。我通过搜索“ios uitextview get tapped word”找到了一些解决方案 ***.com/questions/19779946/… ? ***.com/questions/36043006/… 【参考方案1】:
     let textTest = "I have read and agree with the Privacy Policy & Terms and Conditions"

    let tap = UITapGestureRecognizer(target: self, action: #selector(self.tapLabel))

    textTest.isUserInteractionEnabled = true
    textTest.addGestureRecognizer(tap)

   @IBAction func tapLabel(gesture: UITapGestureRecognizer) 

    let text = (textTest)!
    let termsRange = (text as NSString).range(of: "Terms and Conditions")
    let privacyRange = (text as NSString).range(of: "Privacy Policy")

    if gesture.didTapAttributedTextInLabel(label: attributeLabel, inRange: termsRange) 
        print("Tapped terms")
        let vc = self.storyboard?.instantiateViewController(withIdentifier: "TermsConditionViewController") as! TermsConditionViewController
        self.navigationController?.pushViewController(vc, animated: true)
     else if gesture.didTapAttributedTextInLabel(label: attributeLabel, inRange: privacyRange) 
        print("Tapped privacy")
        let vc = self.storyboard?.instantiateViewController(withIdentifier: "PrivacyPolicyViewController") as! PrivacyPolicyViewController
        self.navigationController?.pushViewController(vc, animated: true)
     else 
        print("Tapped none")
    

【讨论】:

谢谢伙计。但是我有一个问题,所以如果我想让每个单词都可以点击,那么我必须让每个单词都成为一个范围? 让 typeCasteToStringFirst = textField.text 作为 NSString? let newString = typeCasteToStringFirst?.replacingCharacters(in: range, with: string) 你可以试试这个。 当然没有问题。

以上是关于如何在 Swift 中制作一个单词可点击的 UITextView?的主要内容,如果未能解决你的问题,请参考以下文章

swift如何将图像传递给可点击的tableview单元格?

如何在 Swift 中制作放置在 UIViewController 中的水平可滚动组件?

一个视图控制器中的两个表视图 swift

将可比较的值类型 Int 应用于 Swift 4 中的 UIImage 对象

如何使文本中的每个单词都可点击并将其发送到脚本

如何使用可用于 Swift 类的 std:vector 制作 Objective-c 类