UITextField实现模糊查询

有时候,我们可能会需要用到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);
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值