2017-06-06 79 views
1

我想要获取当前在UITextField中输入的单词。获取正在输入的最后一个单词

案例1:

你好

如果光标是第二Ë(意为ê后,刚刚被键入,那么这个词应退还

案例2:

用户从HELLO(光标是第二后),那么这个词地狱应返回

我有这样的代码,但它返回的的UITextField所有文字删除Ø

postView.textView.delegate = self

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 
    let text = (textView.text as NSString?)?.replacingCharacters(in: range, with: text) 

    return true 
} 

更新1: 我已经经历了这些类似的问题了,但这些并没有为我工作。

Get currently typed word in UITextView

Get word that is being typed

+0

你想要一个单词或有效的单词被返回。据我所知,你想从一个句子中得到一个有效的单词。例如“wertuwerg hjfhdsf”这些词不应该返回,但“你好”应该返回? – ChanWarde

+0

@ChanWarde我需要这个词,无论它是否有效。但它必须是被键入的单词(最近的),**不是**这个单词是UITextView中的最后一个单词。 – MJB

+0

let newString = NSString(format:“%@”,textView.text).replacingCharacters(in:range,with:text)as NSString let textNew = newString.substring(to:range.location).components(separatedBy:“ “).last 尝试此操作,并将其更新为其正在输入的词,但直到您键入。 – ChanWarde

回答

4

与下面的代码,它在我结束工作的尝试。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 
    let nsString = textView.text as NSString? 
    let newString = nsString?.replacingCharacters(in: range, with: text) 
    let arr = newString?.components(separatedBy: " ") 
    self.lblWord.text = arr?.last 
    return true 
} 
+0

什么是self.lblWord.text? – MJB

+0

您可以删除该行。它会给你的字符串最后一个字。这是为我而测试你... –

+0

在这里'arr?.last'会返回你最后一个字,你想要的。所以你可以从这里得到这个词 –

相关问题