UITextField 自定义搜索栏

1,创建UITextField,并且设置代理

searchField = [[UITextField alloc]initWithFrame:CGRectMake(0,5,320,36)] ;
    searchField.textColor= [UIColor colorWithRed:0.0/255.0 green:103.0/255.0 blue:155.0/255.0 alpha:1.0];
    searchField.font= [UIFont systemFontOfSize:16] ;
    searchField.backgroundColor= [UIColor blueColor];
    //搜索栏内容的位置
    searchField.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom;
    [searchField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; // textField的文本发生变化时相应事件
//    设置ReturnKeyType为UIRetuirKeySearch;
    [searchField setReturnKeyType:UIReturnKeySearch];
//    设置UITextField的delegate为self
    searchField.delegate=self;
    mytableView.tableHeaderView = searchField;

2,搜索就是要做到实时监控输入内容的变化

- (void) textFieldDidChange:(UITextField*) TextField{
    NSLog(@"textFieldDidChange textFieldDidChange %@", TextField.text);
    
    
    NSString *conditionStr = TextField.text;
    NSLog(@"+++++%@", conditionStr);
    // 2. 创建谓词,准备进行判断的工具
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.nameString CONTAINS [CD] %@ ", conditionStr];
    seachArray = [NSMutableArray arrayWithArray:[allNameArray filteredArrayUsingPredicate:predicate]];
    NSLog(@" searchMuArray  = %@", seachArray);
    
    [mytableView reloadData];
    
    if(![TextField.text isEqualToString:@""]) {
//        delButton.hidden=NO;  // 仿制searchbar后面的小叉叉
    } else{
//        delButton.hidden=YES;
    }
}

上面的代码只是一个参考 具体实现就是这么做的.

3,添加取消按钮

取消不仅仅只是删除UITextField的值,这样,我们还是起不到取消搜索的功能.那么我们应该怎么做呢

添加一个用于删除的button 具体创建就不写了

- (void)fieldCancleButton {
     searchField.text = @"";
    [self textFieldDidChange:searchField];
}

这是button的点击方法

同时,我们也要在viewWillAppear:里面调用button的点击方法,这样我们就能做到我们对搜索到的元素操作后,再次进入该页面的时候.保证显示的内容是全部的内容

 

posted @ 2015-06-25 18:05  NSJELLY  阅读(989)  评论(0编辑  收藏  举报