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

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

拿到需求的时候觉得这个应该挺简单的啊,苹果这么强大,这些功能系统都已经给我们考虑好了。直接使用系统控件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 我还是很乐意与大家一起交流技术的

猜你喜欢

转载自blog.csdn.net/qq_36487644/article/details/81250301