iOS 两种搜索框UISeacherBar

作者: Figo_OU | 来源:发表于2015-06-27 14:32 被阅读5783次

两种UISeacherBar,一种是系统自带的,另一种是利用UITextField做的。这个搜索功能可以用拼音来搜索(自己看demo吧)

  • 先上图
系统自带的UISeacherBar 利用UITextField做的
  • 利用系统的UISeacherBar的话,需要设置代理,然后还需要有个
    UISearchDisplayController来装搜索到的结果。并设置代理和数据源。
- (void)initSearchTextField
{
    SearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, ScreenW, 44)];
    SearchBar.delegate = self;
    SearchBar.exclusiveTouch = YES;
    [SearchBar setPlaceholder:@"输入城市名"];
    
    resultController = [[UISearchDisplayController alloc] initWithSearchBar:SearchBar contentsController:self];
    resultController.searchResultsDataSource = self;
    resultController.searchResultsDelegate = self;
    
}
  • 而在自定义的搜索框,则需要设置UITextFieldUIControlEventEditingChanged事件。
    如:
    [searchTextFiled addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    然后在textFieldChanged函数中作想要做的事情。

github:https://github.com/ouzhenxuan/UISearchBar

相关文章

网友评论

  • 834f65bae4f0:楼主,向你请教个事,我的思路是每当textField内容改变的时候就会走shouldChangeCharactersInRange这个方法,然后我的搜索请求就写在这个回调方法里面,但是,当我输入X的时候,这个方法里面的textField.text = @"";当我再输入一个X的时候,才等于"X",也就是说每次搜索请求都慢一拍呀,这个怎么解决呢?
    大脸猫xiao3:@区振轩 这样写是只能用拼音吗?换成汉字也行不过就是每次修改输入会调用两次方法。
    834f65bae4f0:@区振轩 已解决,谢谢楼主 :stuck_out_tongue_winking_eye:
    ps:最后决定改用按下return搜索一次
    Figo_OU:@suming1910 [feild addTarget:self action:@selector(hehe) forControlEvents:UIControlEventEditingChanged];
  • 834f65bae4f0:楼主,你的github链接点不开
  • 阿丰在长春:已经放弃系统自带,平时UI要求比较高,重写一 个搜索更方便一些。 :wink:
    阿丰在长春:@小東子 自定义UI,查询用字符串匹配就好了啊。
    小東子:@Mr_CrazyPeter 用textfield 写的吗,交流一下子。 :smiley:

本文标题:iOS 两种搜索框UISeacherBar

本文链接:https://www.haomeiwen.com/subject/fzeeqttx.html