在textView内部的文本上设置动作(手势识别器)

时间:2016-09-13 10:02:09

标签: ios swift2 uitextview uigesturerecognizer nsattributedstring

好的,所以假设下面的文本,因为它在textView

P

我有一些文字,我正在我的textView中显示,我想在上面的例子中用户点击某些想要的文字时触发一个动作我想触发并在用户点击 时采取行动doAction 即可。我不知道我将如何做到这一点,即使这是可能的,我知道如何在我的textView上添加一个链接,但这不是同一个案例。任何人都可以指导我如何实现这个目标?

P.S。如果问题不够明确,请告诉我,我会解决它。

2 个答案:

答案 0 :(得分:3)

1)使用attributedString,您可以实现所需的行为。以下是示例: -

  @IBOutlet weak var terms: UITextView!

  let privacyURL = "http://www.programmincrew.in";

override func viewDidLoad() {
    super.viewDidLoad()

    self.terms.delegate = self
    let str = "By using this app you agree to our Terms and Conditions and Privacy Policy"
       let attributedString = NSMutableAttributedString(string: str)
    let foundRange = attributedString.mutableString.rangeOfString("Privacy Policy")
    attributedString.addAttribute(NSLinkAttributeName, value: privacyURL, range: foundRange)
    terms.attributedText = attributedString
  }



    func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
 if (URL.absoluteString == privacyURL) {
          let myAlert = UIAlertController(title: "Conditions", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
          myAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
          self.presentViewController(myAlert, animated: true, completion: nil)
        }
        return false
      }

2)将UITextView的dataDetectorTypes属性设置为UIDataDetectorTypeLink

答案 1 :(得分:2)

基本上,您需要添加手势识别器才能在文本视图中获取分接点。 UITextView 子类,当用户点击指定的词或词组时执行块。

试试这个演示: -

目标C HBVLinkedTextView

Swift SwiftTextViewHashtag