我有一个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)")
}
}