最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法。

  第一步:引入添加相关的委托代理EVNCustomSearchBarDelegate,懒加载初始化对象

  

if (!_searchBar) {

_searchBar = [[EVNCustomSearchBar alloc] initWithFrame:CGRectMake(16, 0, K_CC_SCREEN_WIDTH-32, 44)];

_searchBar.backgroundColor = K_CC_COLOR_STRING(@"#F5F5F5");

_searchBar.textColor = K_CC_COLOR_STRING(@"#999999");

_searchBar.textFieldColor = [UIColor clearColor];

_searchBar.iconImage = K_CC_IMAGE(@"newhome_search");

_searchBar.iconAlign = EVNCustomSearchBarIconAlignCenter;

[_searchBar setPlaceholder:K_CC_LOCAL_STR(@"home.search")];// 搜索框的占位符

_searchBar.placeholderColor = K_CC_COLOR_STRING(@"#999999");

_searchBar.delegate = self; //设置代理

_searchBar.isHiddenCancelButton = YES;

_searchBar.tintColor = K_CC_COLOR_STRING(@"#999999");

[_searchBar sizeToFit];

}

return _searchBar;

  第二步:添加到相应的view上

  

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, K_CC_SCREEN_WIDTH, 44)];

headerView.backgroundColor = [UIColor clearColor];

[headerView addSubview:self.searchBar];

self.distributeTable.tableHeaderView = headerView;

  第三步:添加相关的搜索代理逻辑处理

  

#pragma mark - EVNCustomSearchBarDelegate -

- (void)searchBar:(EVNCustomSearchBar *)searchBar textDidChange:(NSString *)searchText {

if (searchText.length > 0) {

// 根据模型属性搜索结果

self.searchList=[NSMutableArray arrayWithArray:[[NDSearchTool tool] searchWithFieldArray:@[@"username"] inputString:searchText inArray:self.dataAddressList]];

self.isSearch = YES;

}else{

self.isSearch = NO;

self.currentSeasSearchItem=-1;

//清空搜索内容Id

[self.searchList removeAllObjects];

}

[self.distributeTable reloadData];

}

- (NSArray *)searchWithFieldArray:(NSArray *)fieldArray

inputString:(NSString *)inputString

inArray:(NSArray *)array

{

if (![array count] || ![fieldArray count])

{

return nil;

}

NSPredicate *scopePredicate;

NSMutableArray *backArray = [NSMutableArray array];

for (NSString *fieldString in fieldArray)

{

NSArray *tempArray;

scopePredicate = [NSPredicate predicateWithFormat:@"SELF.%@ contains[c] %@", fieldString, inputString];

tempArray = [array filteredArrayUsingPredicate:scopePredicate];

for (NSObject *object in tempArray)

{

if (![backArray containsObject:object])

{

[backArray nd_addObj:object];

}

}

}

return backArray;

}

  完成这些就可以实现动态的模糊搜索,大功告成。

iOS中搜索框EVNCustomSearchBar使用小结的更多相关文章

  1. iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  2. ios UISearchBar搜索框的基本使用

    摘要: 小巧简洁的原生搜索框,漂亮而易用,如果我们的应用没有特殊需求,都可以使用它. iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建 ...

  3. ArcGIS API for javascript中搜索框的使用问题

    我们在开发中常常需要用搜索框去搜索地图上的某个数据,然后在地图上显示出来.这个时候我们要用到esri.dijit.Search().在设置里面的sources的时候,需要注意一点:必须要使用在线的fe ...

  4. Android 自定义EditText实现类iOS风格搜索框

    最近在项目中有使用到搜索框的地方,由于其样式要求与iOS的UISearchBar的风格一致.默认情况下,搜索图标和文字是居中的,在获取焦点的时候,图标和文字左移.但是在Android是并没有这样的控件 ...

  5. IOS中文本框输入自动隐藏和自动显示

    uilabe和UIText扩展方法 +(UILabel*)LabWithFrame:(CGRect)_rect text:(NSString*)aText textColor:(UIColor*)aC ...

  6. 解决select2 在modal中搜索框无效的问题

    $.fn.modal.Constructor.prototype.enforceFocus = function() {};

  7. iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  8. UISearchBar改变搜索框的高度

    系统的searchBar UISearchBar的中子控件及其布局 UIView(直接子控件) frame 等于 searchBar的bounds,view的子控件及其布局 UISearchBarBa ...

  9. vue中搜索关键词,使文本标红

    UserHead.vue中搜索框: <!-- 搜索 --> <el-col :span="6" :offset="8" class=" ...

  10. 带输入提示的搜索框ajax请求

    先放图 首先要引用的文件有: base.css  https://www.cnblogs.com/chenyingying0/p/12363689.html jquery.js transition. ...

随机推荐

  1. U盘安装Ubuntu18.04系统

    U盘安装Ubuntu18.04系统 一.安装盘制作 根据您当前使用系统的不同,需要不同的工具制作 U 盘启动安装盘.目前主要有 Linux 系统和 Windows 系统两类. 1.Linux 系统 ( ...

  2. RPA处理京东滑块拼图验证码

    在进行京东商家后台企业账号的RPA自动化操作过程中,登录环节是必不可少的步骤.然而,这一过程中有时会遇到一种特殊的验证机制--滑块拼图验证码,它的突然出现如同一道屏障,阻碍了自动化的顺利进行.因为只有 ...

  3. 【Python】Django学习1

    按黑马程序员的美多商场作方向: https://www.bilibili.com/video/BV1nf4y1k7G3 一.应用创建.注册处理.配置 Pycharm 创建Django项目: 自应用注册 ...

  4. Jupyter 实验室中的 GPU 仪表板

    这两天收到了NVIDIA公司推送的新闻: https://developer.nvidia.com/zh-cn/blog/gpu-dashboards-in-jupyter-lab/?ncid=em- ...

  5. Linux查看硬件信息超强命令sar,以及可视化工具ksar

    一.概述 sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘 ...

  6. Visual Studio Code 重置“不再询问”选项

    有一次使用 VS Code 重命名一个 Python 文件时,VS Code 询问"扩展'Python'希望通过移动此文件来进行重构更改".当时没有多想,选中"不再提问& ...

  7. 如何排查线上w3wp.exe CPU高的问题,使用到了WinDbg、Visual studio来分析IIS进程池的.dmp文件

    最近发现服务器上某个web站点老是CPU很高,该站点部署在IIS上,我IIS上有多个站点,每个站点一个进程池,每个进程池取名都是根据站点来取的,所以很容易看出哪个站点吃掉的CPU,该站点已运行十几年, ...

  8. 每天5分钟复习OpenStack(十五)Ceph与Bcache结合

    上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速. 1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME ...

  9. Round #2022/11/26

    问题 B:染色 题目描述 有长度为 \(n\) 的一个序列,编号为 \(1\) 到 \(n\) ,现要对这些元素进行染色标记,若编号 \(i-j\) 为素数,且 \(1\le i < j \le ...

  10. css实现中括号边框

    要求:css + div 实现中括号边框 一.实现方式 .square_brackets { border: none; position: relative; padding: 0; height: ...