如何制作一个UITextView,只需一次触摸即可选择一个单词?

时间:2016-06-29 01:42:17

标签: ios objective-c swift uitextview

我有一个不可编辑的UITextView,但只需单击该单词就可以选择一个单词,并将所选单词传递给另一个单词。有什么方法可以解决这个问题?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

Superhacky解决方案(如果你有很多话,这是一个坏主意):

  • UITextView个链接中创建所有单词(但不要将其格式化)。
  • 在IB中选择UITextView
  • 让您的VC(或拥有UITextVeiw的任何人)实施UITextViewDelegate
  • 实施-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
  • 使用characterRange设置UITextView selectedTextRange
  • 利润!

不太苛刻的解决方案是使用UITapGestureRecognizer来获取点按位置,将其翻译为UITextView并选择横向位于点击位置的字形。

答案 1 :(得分:0)

第1步:     要从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)")
    }
}