产品需求:点击搜索框,弹出键盘,当输入内容发生变化时,需要实时匹配与输入内容相关的产品,列表展示,让用户去选择;类似于淘宝和京东的搜索功能。

拿到需求的时候觉得这个应该挺简单的啊,苹果这么强大,这些功能系统都已经给我们考虑好了。直接使用系统控件UISearchBar,辛辛苦苦折腾了半天页面都出来了后,发现UISearchBar和UITextField还是有区别的,UISearchBar没有监听用户输入内容实时变化的方法

UISearchBar 有一个  - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar 这个方法,经测试发现次方法,当用户输入内容后,需要点击确认按钮才会调用,这个需求不是产品想要的,我是不可以擅自改需求的。之前有用过UITextField朋友们应该都知道,UITextField是可以监听到用户输入的内容是否发生变化的。方法如下

[textField addTarget:self action:@selector(textFieldValueChanged:) forControlEvents:(UIControlEventEditingChanged)];
- (void)textFieldValueChanged:(UITextField *)textField {NSLog(@"==========%@", textField.text);
}

只需给textField添加一个点击事件,监听textField编辑时值得变化即可,在textFieldValueChanged:的方法中去获取到textField的值去执行下面的匹配逻辑即可了。

当然想做到淘宝的搜索效果,远远不止这些,比如:热门搜索、历史记录、以及上面提到的实时匹配功能。这其中的逻辑以及页面展示不是一天所能完成的。

我写次骗博客主要是想告诉大家,如果想实现实时匹配的功能,最好是自定义搜索框,自定义一个UIView,然后将导航栏的titleView赋值给此View,在此View上自定义自己的页面即可,当然是有代码的

UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
backView.backgroundColor = [UIColor clearColor];
self.navigationItem.titleView = titleView;

如果想了解整个功能代码的小伙伴,可以加我QQ:349595945 我还是很乐意与大家一起交流技术的

iOS 自定义搜索框实时监听输入的内容变化相关推荐

  1. UITextField实时监听输入文本的变化

    开始用如下代理方法发现只能监听到变化后的前一位 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NS ...

  2. JavaScript 实时监听input 中值变化

    JavaScript 实时监听input 中值变化 在 <input> 标签中,添加属性 oninput ,oninput 事件在元素获得用户输入时发生. 当 <input> ...

  3. ios 监听TextField中内容变化

    本篇文章只为帮助跟多的人.适合初学者. 在这里我介绍3种监听UITextField的方法.并在最后写了一个小的demo 提供参考. -------请不要纠结小编的命名方式规不规范,一切只为共同学习,共 ...

  4. 监听mysql表内容变化 使用canal_2 监听mysql表内容变化,使用canal

    mysql本身是支持主从的(master slave),原理就是master产生的binlog日志记录了所有的增删改语句,将binlog发送到slave节点进行执行即可完成数据的同步. canal是阿 ...

  5. js 实时监听input中值变化

    摘自:http://blog.csdn.net/spy19881201/article/details/25537225 示例: <!DOCTYPE html> <html> ...

  6. 监听mysql表内容变化 使用canal,canal 监听同步指定数据库,所有表

    canal 监听同步指定数据库,所有表 canal 监听同步指定数据库,所有表 因为工作需求,需要用到数据库同步,又从网上找了一些发现都有些问题,所以自己弄好之后写一篇总结,及配置步骤吧 先将 MyS ...

  7. jq 检测元素内html变化,jq 监听 textarea 元素内容变化的方法

    在前台是可以限制 textarea 元素内输入内容的长度的,当然是用 jquery 代码实现起来是最简单,方便的,JQ脚本通过对 textarea 元素内容变化的检测来判断内容是否超出指定的长度. j ...

  8. 实时监听div,input内容改变并获取值(包括脚本动态添加)

    在DOM中可以通过DOMNodeInserted和DOMNodeRemoved这两个事件来监视DOM元素的插入和移除. <!doctype html> <html lang=&quo ...

  9. 实时监听input输入框value的变化:

    HTML5 标准事件 oninput 和 IE 专属事件 onpropertychange 事件实时监听输入框value的变化 oninput 事件在用户输入时触发. 该事件在 <input&g ...

最新文章

  1. 使用chrome下载m3u8视频
  2. BizTalk开发系列(三十一)配置和使用HTTP适配器
  3. SparkContext转化为JavaSparkContext
  4. map的extract 是更换 map 的键而不重分配的唯一方式:
  5. 使用XFire+Spring构建Web Service(二)
  6. WinForm立体饼状图实现(附源码示例) 之配餐系统的开发
  7. java导出 elsx 文件,如何获取java导出的excel文件,发送请求导出excle文件
  8. leetcode538 把二叉搜索树转换成累加树
  9. 对 带头结点的单链表 的操作
  10. 基于DNS实现智能化访问网站
  11. 活动报名 | 量子位携搜狐,与行业大咖一同解读AI芯片的前世今生
  12. 是时候研读一波导师的论文--一个简单有效的联合模型
  13. 数据库课程设计(学校运动会管理系统)
  14. opendrive简介
  15. erdas几何校正_遥感图像的几何校正
  16. 【收藏的一些博客地址-后端开发】
  17. 笠翁对韵(全卷,珍藏版附注释)
  18. SAP中货架寿命控制功能的简单测试分析
  19. matlab怎么做跳动的桃心曲线,用matlab画跳动的爱心
  20. 深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想

热门文章

  1. 策略模式+简单工厂之旅游出行策略与门票折扣案例
  2. 双网卡bond0绑定配置手册
  3. linux开机启动bond,centos 7 网卡绑定 bond0 开机无法自启
  4. 文件存储服务RapidShare流量暴跌入困境
  5. 【脑电(EEG)等公开数据集汇总】
  6. [20110209]Cocos2dSimpleGame入门系列《如何用cocos2d-x来开发简单的Uphone游戏》学习小记
  7. 【mysql】sql语句的四舍五入
  8. 系统 CPU 效率高,DMA 技术功不可没!
  9. directx sdk下载网址
  10. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例37