如何创建一个UITextView在一次触摸时选择一个单词



我有一个UITextView,它是不可编辑的,但需要能够选择一个词在触摸这个词,并有选择的词被传递到另一个函数。该怎么做呢?

超级黑客解决方案(如果你有很多单词,这是一个非常糟糕的主意):

  • 使UITextView链接中的所有单词(但不要这样格式化它们)。
  • 让你的UITextView在IB中可选择
  • 有你的VC(或谁拥有uitextview)实现UITextViewDelegate
  • 实现-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
  • 使用characterRange设置UITextView selectedTextRange
  • 利润!

更简单的解决方案是使用UITapGestureRecognizer来获取点击位置,将其转换为UITextView并选择水平环绕点击位置的字形。

第一步:要从textView中获得选定的字符串,你必须实现UITextViewDelegate委托和实现一个方法。

步骤2:将selectedText传递给另一个函数

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)")
    }
}

最新更新