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 就是逐字联想需要的文本参数。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容