Ios 如何制作一个UITextView,通过一次触摸选择一个单词?

Ios 如何制作一个UITextView,通过一次触摸选择一个单词?,ios,objective-c,swift,uitextview,Ios,Objective C,Swift,Uitextview,我有一个UITextView,它是不可编辑的,但需要能够在触摸该单词时选择该单词,并将所选单词传递给另一个函数。怎么办?任何帮助都将不胜感激。超级背包解决方案(如果你有很多话,这是个坏主意): 在UITextView链接中创建所有单词(但不要将其格式化) 在IB中选择UITextView 让你的VC(或拥有UITextVew的人)实现UITextViewDelegate 实现-(BOOL)textView:(UITextView*)textView应与范围内的URL:(NSURL*)URL:(

我有一个UITextView,它是不可编辑的,但需要能够在触摸该单词时选择该单词,并将所选单词传递给另一个函数。怎么办?任何帮助都将不胜感激。

超级背包解决方案(如果你有很多话,这是个坏主意):

  • UITextView
    链接中创建所有单词(但不要将其格式化)
  • 在IB中选择
    UITextView
  • 让你的VC(或拥有UITextVew的人)实现
    UITextViewDelegate
  • 实现
    -(BOOL)textView:(UITextView*)textView应与范围内的URL:(NSURL*)URL:(NSRange)字符范围进行交互
  • 使用
    characterRange
    设置
    UITextView
    selectedTextRange
  • 利润
不太老套的解决方案是使用
UITapgestureRecognitor
获取抽头位置,将其转换为
UITextView
并选择水平环绕抽头位置的图示符。

步骤1: 要从textView获取所选字符串,必须实现
UITextViewDelegate
delegate并实现一个方法

步骤2: 将所选文本传递给另一个函数

class ViewController: UIViewController, UITextViewDelegate {
    @IBOutlet weak var textView: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.textView.delegate = self;
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func textViewDidChangeSelection(textView: UITextView) {
        let range: NSRange = textView.selectedRange
        let text = textView.text as NSString
        let selectedText = text.substringWithRange(NSMakeRange(range.location, range.length))
        self.getSelectedText(selectedText)
    }

    func getSelectedText(text: String) {
        NSLog("\(text)")
    }
}