iOS中搜索框EVNCustomSearchBar使用小结
最近在项目开发中用到了搜索框,之前都是用的系统的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使用小结的更多相关文章
- iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)
在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...
- ios UISearchBar搜索框的基本使用
摘要: 小巧简洁的原生搜索框,漂亮而易用,如果我们的应用没有特殊需求,都可以使用它. iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建 ...
- ArcGIS API for javascript中搜索框的使用问题
我们在开发中常常需要用搜索框去搜索地图上的某个数据,然后在地图上显示出来.这个时候我们要用到esri.dijit.Search().在设置里面的sources的时候,需要注意一点:必须要使用在线的fe ...
- Android 自定义EditText实现类iOS风格搜索框
最近在项目中有使用到搜索框的地方,由于其样式要求与iOS的UISearchBar的风格一致.默认情况下,搜索图标和文字是居中的,在获取焦点的时候,图标和文字左移.但是在Android是并没有这样的控件 ...
- IOS中文本框输入自动隐藏和自动显示
uilabe和UIText扩展方法 +(UILabel*)LabWithFrame:(CGRect)_rect text:(NSString*)aText textColor:(UIColor*)aC ...
- 解决select2 在modal中搜索框无效的问题
$.fn.modal.Constructor.prototype.enforceFocus = function() {};
- iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)
在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...
- UISearchBar改变搜索框的高度
系统的searchBar UISearchBar的中子控件及其布局 UIView(直接子控件) frame 等于 searchBar的bounds,view的子控件及其布局 UISearchBarBa ...
- vue中搜索关键词,使文本标红
UserHead.vue中搜索框: <!-- 搜索 --> <el-col :span="6" :offset="8" class=" ...
- 带输入提示的搜索框ajax请求
先放图 首先要引用的文件有: base.css https://www.cnblogs.com/chenyingying0/p/12363689.html jquery.js transition. ...
随机推荐
- 4、Git之分支操作
4.1.分支的概述 在版本控制过程中,当需要同时推进多个任务时,可以为每个任务创建的单独分支. 虽然分支的底层实现是指针的引用,但是初学阶段可以将分支简单理解为副本,一个分支就是一个单独的副本. 使用 ...
- 【Eclipse】下载安装(Windows)
Eclipse的下载和安装 官网地址:https://www.eclipse.org/downloads/ 刚用的时候选了安装版,然后安装到一半就失败了 建议点下面的解压包下载,解压即用 注意看框线的 ...
- Accurately computing running variance —— 已知两个数列各自的均值和方差,如何快速求出两个数列拼合后的均值和方差(续)
原内容来自: https://www.johndcook.com/blog/standard_deviation/ 计算公式: 该种计算方式可以只保存历史数据的平方和,与历史数据的和. 相关前文: 已 ...
- Jax框架:通过显存分析判断操作是否进行jit编译
相关: https://jax.readthedocs.io/en/latest/device_memory_profiling.html 代码: import jax import jax.nump ...
- 运用Npcap库实现SYN半开放扫描
Npcap 是一款高性能的网络捕获和数据包分析库,作为 Nmap 项目的一部分,Npcap 可用于捕获.发送和分析网络数据包.本章将介绍如何使用 Npcap 库来实现半开放扫描功能.TCP SYN 半 ...
- 微服务开发手册之GRPC
荐
GRPC是一个高性能.通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言. @[TOC] 1 简介 在GRPC框架中,客户端可以像调用本地对象一样直接调 ...
- logback日志级别动态切换的四种方案
荐
生产环境中经常有需要动态修改日志级别. 现在就介绍几种方案 方案一:开启logback的自动扫描更新 配置如下 <?xml version="1.0" encoding=&q ...
- Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数
1. 前言 很多朋友在调试驱动的时候,都会遇到这样一个场景: 修改一个参数,然后调用某个内核中的函数. 比如将某个gpio的值拉高/拉低,修改某个寄存器的值等等. 如果每一个参数都通过字符设备的ioc ...
- idea关闭窗口快捷键
File->settings->keymap->main menu->window->editor tabs->close 根据自己的使用习惯将想要关闭的标签设置快 ...
- 【Python自动化】之利用JS操作页面滚动条(新)
如何操作页面中的滚动条,有以下几个方法: 一.查找可见元素进行滚动页面(通用) 方法一: ①移动到元素element对象的"顶端",与当前窗口的"顶部"对齐(默 ...