有时候,我们可能会需要用到UITextField来自己构造一些类似于搜索框的控件来进行搜索;
假如我们用UITextField构造了一个搜索框,那么要实现简单的模糊查询,该如何去做呢?
一般我们会想到这个方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:AText];
添加了一个名字为UITextFieldTextDidChangeNotification的通知的监听,监听AText的变化情况,AText就是你构造的搜索框的那个UITextField
//通知的调用方法,点击键盘上按钮和汉字选择栏的按钮都会调用这个方法(但是有个缺陷,就是点击汉字和确定按钮会走两遍这个方法)
-(void)textFiledEditChanged:(NSNotification *)obj
{
UITextField *textField = (UITextField *)obj.object;
NSString *str=textField.text;
//这样就很好的解决了走两遍的问题,不至于走两遍额模糊查询代码
if ([self.strJs isEqualToString:str])
{
//在这里写模糊查询的实现代码,详情可以查看上一篇“UISearchBar和UITableView实现简单的模糊查询”(这里同样可以配合 UITableView使用)
}
else
{
self.strJs=textField.text;
NSLog(@"走的是通知方法,内容%@",str);
}
}