UITextField 开发逐字联想

UITextField 是我们经常使用的输入视图控件,当我们把它用在作为一个搜索框使用时,可能会有带逐字联想的功能,这个时候我们就需要监听着 UITextField 的一举一动。

使用代理 UITextFieldDelegate, UITextFieldDelegate提供了一个可以监听文本内容变化的委托方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;  

但是,方法返回的三个参数分别是:
1、还没有加入输入变化前的 textField,所以能够访问到的也只有编辑前的文本内容;
2、文本变化的节点位置和个数;
3、变化的字符串内容,可能是新增也可能是删除的。

可是,只访问到编辑前的数据是不具有同步性的,而逐字联想需要的是当前 UITextField 的文本内容,这个时候我们就需要用到 NSString 的一个方法:

/* 用指定的字符串替换范围中的字符,返回新的字符串。*/
- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement;

来得到具有同步性的文本内容。

UITextFieldDelegate 的具体代码:


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 
    NSString *strContent = [textField.text stringByReplacingCharactersInRange:range withString:string];
    NSLog(@"当前输入内容:%@", strContent);
    return YES;
}

strContent 就是逐字联想需要的文本参数。

你可能感兴趣的:(UITextField 开发逐字联想)