最近在项目开发中用到了搜索框,之前都是用的系统的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. 【Spring】02 过程分析

    回顾JavaWeb三层架构设计: UserDao接口 public interface UserDao { void getUser(); } 实现类 public class UserDaoImpl ...

  2. 【Centos】RPM安装Mysql8

    先去官网下载RPM包,没想到RPM包是红帽发行版 https://dev.mysql.com/downloads/mysql/ 使用wget直接下载到Centos里面: wget https://cd ...

  3. 【DataBase】局域网访问Windows系统下的MySQL8

    Windows服务主机已经安装好MySQL8并且配置了用户密码 MySQL8更改用户密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ...

  4. 【Vue】06 Webpack Part2 打包命令配置

    Webpack 配置: 入口 & 出口: 就是我们使用的打包命令: 一个是对什么文件执行,这就是入口 一个是输出到什么文件,这就是出口 每一次打包使用这个命令都必须指定这两个必要的参数 所以将 ...

  5. 人机协同的半自动人形机器人 —— Covariant公司的RFM-1机器人

    Covariant公司的RFM-1机器人实现了一个极为有意思的功能,那就是在机器人执行任务的过程中如果遇到无法处理的情况下就会停止下来然后等待人类的语言指示,比如:夹具向上移动2cm,更换更大型号的夹 ...

  6. Google的TPU的向量化内存的读取规格——单次读取/写入的数据量

    异构加速设备: GPU.TPU.NPU 这几种设备,除了GPU公开了部分硬件设计原理和软件编程范式以外,所有的TPU和NPU的资料都是不公开的,都是被其所属公司保留的,然后这些公司会自己在这些硬件之上 ...

  7. 基于Unity开发的强化学习环境(游戏环境):ml-agents —— Unity ML-Agents

    介绍: https://medium.com/nerd-for-tech/an-introduction-to-machine-learning-with-unity-ml-agents-af7193 ...

  8. 国产CPU,国产操作系统UOS——零刻LZX迷你主机 , 显卡驱动安装以及屏幕配置

    看网上新闻发现了一款mini电脑--零刻LZX迷你主机 国产兆芯四核八线程 教学家用办公全能王8+256G 该款电脑使用的是国产CPU兆芯,以及国产操作系统UOS,由于价格还不贵就入手玩玩. 商品地址 ...

  9. model.train方法的dataset_sink_mode参数设置为False时以step作为单位打印数据——(只在mode=context.GRAPH_MODE下成立,在mode=context.PYNATIVE_MODE模式下不成立)

    如题: 官方中的内容支持: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/advanced_use/summary_record.html ...

  10. C# 命名空间和程序集 小记

    前言 本文只是为了复习,巩固,和方便查阅,一些知识点的详细知识会通过相关链接和文献标记出来. 命名空间 1.1 概念 可以把命名空间看做字符串,他加在类名或类型名前面并且通过点进行分割 既然看做是字符 ...