2016-06-29 2 views
-1

У меня есть UITextView, который не редактируется, но должен иметь возможность выбрать слово одним касанием этого слова и передать выбранное слово другой функции. Каким образом это можно сделать? Любая помощь будет оценена по достоинству.Как сделать UITextView, который выбирает слово одним касанием?

ответ

0

решение Superhacky (если у вас есть много слов, это плохая плохая идея):

  • Сделать все слова UITextView ссылки (но не форматирует их как таковые).
  • Сделайте свой UITextView выбираемый в IB
  • Попросите VC (или тот, кто владеет UITextVeiw) осуществлять UITextViewDelegate
  • Реализовать -(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
  • Используйте characterRange установить UITextView selectedTextRange
  • прибыль!

Менее Hacky решение было бы использовать UITapGestureRecognizer, чтобы получить место под крана, чтобы перевести его на UITextView и выберите глифы, которые горизонтально surrond расположение крана.

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