300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > iOS 自定义搜索框实时监听输入的内容变化

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

时间:2019-08-07 00:47:39

相关推荐

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 我还是很乐意与大家一起交流技术的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。