UITextField获取当前编辑的单词

Grz*_*ski 5 nsstring uitextfield ios

我正在研究一个自动完成组件,我有一个问题,我想以一些简单的方式解决.

我想支持对自动填充文本的编辑,例如:

 blablabl @usertag blablabl
Run Code Online (Sandbox Code Playgroud)

如果用户返回并编辑@usertag字符串,我想在编辑时启动自动完成功能.

问题是,如何从文本字段中获取当前编辑的单词.我想到了光标位置,用""(空格)分隔nsstring到字,并从第一个字到光标位置计数字母.

有没有更简单的方法呢?

Grz*_*ski 8

好的,我找到了一种很容易做到的方法.也许有人会发现它很有用:

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];
Run Code Online (Sandbox Code Playgroud)


Pra*_*iya 5

Swift 4解决方案

   func getCurrentEditingWord() ->String? {
        let selectedRange: UITextRange? = self.textView.selectedTextRange
        var cursorOffset: Int? = nil
        if let aStart = selectedRange?.start {
            cursorOffset = self.textView.offset(from: self.textView.beginningOfDocument, to: aStart)
        }
        let text = self.textView.text
        let substring = (text as NSString?)?.substring(to: cursorOffset!)
        let editedWord = substring?.components(separatedBy: " ").last
        return editedWord
    }
Run Code Online (Sandbox Code Playgroud)