UITextField获取当前编辑的单词

我正在做一个自动完成组件,我有一个问题,我想用一些简单的方法来解决。

我想支持对自动完成的文本进行编辑,例如:

blablabl @usertag blablabl 

如果用户返回并编辑@usertagstring,我想在编辑时启动自动完成。

问题是,如何从文本字段获取当前编辑的单词。 我考虑把光标位置,单独的nsstring用“”(空格)换成单词,并把第一个单词的字母数到光标位置。

有没有更简单的方法来做到这一点?

好吧,我find了一个方法来做到这一点很容易。 也许有人会觉得它有用:

 UITextRange* selectedRange = [textField selectedTextRange]; NSInteger cursorOffset = [textField offsetFromPosition:0 toPosition:selectedRange.start]; NSString* text = textField.text; NSString* substring = [text substringToIndex:cursorOffset]; NSString* editedWord = [[substring componentsSeparatedByString:@" "] lastObject]; 

你有没有尝试过使用UITextFieldDelegate可用的方法? 如果在编辑期间访问单词就是你想要的,你可以简单地使用-textField:shouldChangeCharactersInRange:replacementString:在这个方法里面,你可以在inputstring的时候访问string,而且你也可以在这里对任何string进行操作新的字符input。