最近在项目开发中用到了搜索框,之前都是用的系统的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. RPA京麦咚咚批量发送消息

    京麦咚咚发送消息,首先我们需要确定给谁发,发送什么内容 给谁发:可以传入京东用户名.京东订单号.咚咚将通过此条件进行搜索进入会话框 发送什么内容:批量发送信息给不同的用户,比如给不同的订单用户发送其相 ...

  2. 【ELK】Kibana-7.13.1版本 启动报错 Centos6

    报错信息: [root@centos6-1 gcc-4.8.2]# /opt/kibana-7.13.1-linux-x86_64/bin/kibana /opt/kibana-7.13.1-linu ...

  3. 在WSL Ubuntu中设置sshd自启动

    参考: https://blog.csdn.net/android_cai_niao/article/details/128490566 ------------------------------- ...

  4. B站基于Apache DolphinScheduler的一站式大数据集群管理平台(BMR)初窥

    一.背景 大数据服务是数据平台建设的基座,随着B站业务的快速发展,其大数据的规模和复杂度也突飞猛进,技术的追求也同样不会有止境. B站一站式大数据集群管理平台(BMR),在千呼万唤中孕育而生.本文简单 ...

  5. 作业帮基于 DolphinScheduler 的数据开发平台实践

    摘要 随着任务数量.任务类型需求不断增长,对我们的数据开发平台提出了更高的要求.本文主要分享我们将调度引擎升级到 Apache DolphinScheduler 的实践经验,以及对数据开发平台的一些思 ...

  6. CH03_运算符

    CH03_运算符 算术运算符 作用:用于处理四则运算 示例: #include <iostream> using namespace std; int main() { int a = 1 ...

  7. 面试必问之kafka

    问题1:消息队列的作用 1. 解耦 快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空.哪个时间段有空,然后再确定好送货的方案.这样完全依赖收货人了!如果快递一多,快递小哥估计的忙 ...

  8. 4. 从0开始学ARM-ARM指令,移位、数据处理、BL、机器码

    <到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 关于ARM指令用到的IDE开发环境可以参考下面这篇文章 <1. 从0开始学AR ...

  9. 【CMake系列】06-项目结构与输出路径管理

    为了对大型项目实现更好的管理[模块化协作开发等等],cmake 提供了很多指令,可以对项目的结构进行调整.管理,便于项目的合理规划.本文我们要学习的就是 项目结构的设置,以及 构建程序等 输出路径的设 ...

  10. 使用 preloadComponents 进行组件预加载

    title: 使用 preloadComponents 进行组件预加载 date: 2024/8/18 updated: 2024/8/18 author: cmdragon excerpt: 摘要: ...