iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能

 更新时间:2020年03月19日 20:56:05   作者:瓜皮青年阿刚  
这篇文章主要介绍了iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

注:CSDN的代码块有点捞,如果浏览器窗口较窄,一行代码占了两行的位置,后面的代码就看不到了,大家可以把浏览器窗口拉大一点

UI小姐姐设计的搜索框经常是五花八门,系统的搜索框经常不能满足我们的需求,需要我们特别定制一个。但是UITextField的诸多回调里面,没有一个是适合触发搜索时间的。
UITextFieldTextDidChangeNotification调用过于频繁,每输入一个字符就调一次接口怕是不太合适。
UITextFieldTextDidEndEditingNotification只有在结束编辑的时候才会调一次,结束编辑就意味着键盘消失了,也不太合适。
这样就难倒我们了吗,当然不是,办法还是有滴。

解决方案

先自定义一个搜索框 改好样式,然后监听UITextFieldTextDidChangeNotification

- (void)textFieldDidChange{
 if (self.searchDelegate && [self.searchDelegate respondsToSelector:@selector(customSearchBar:textDidChange:)]) {
 [self.searchDelegate customSearchBar:self textDidChange:self.text];
 }
}

使用

@property (nonatomic, strong) LGCustomSearchBar *searchBar;
@property (nonatomic, assign) NSInteger inputCount; 记录输入次数

- (void)viewDidLoad {
 [super viewDidLoad];
 self.searchBar = [[LGCustomSearchBar alloc] initWithFrame:CGRectMake(20, 10, kScreenWidth-40, 36)];
 self.searchBar.searchDelegate = self;
 [self.view addSubview:self.searchBar];
}
- (void)customSearchBar:(LGCustomSearchBar *)searchBar textDidChange:(NSString *)searchText{
 if (searchText.length == 0) {
 [self searchKeyword:@(self.inputCount)];
 }
 else{
 self.inputCount++;
 [self performSelector:@selector(searchKeyword:) withObject:@(self.inputCount) afterDelay:1.5f];
 }
}
- (void)searchKeyword:(NSNumber *)inputCount{
	// 判断不等于0是为了防止用户输入完直接点击搜索,延时结束之后又搜索一次
 if (inputCount.integerValue == self.inputCount && self.inputCount != 0) {
 [self loadData];
 }
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
 [self loadData];
 return NO;
}
- (void)loadData{
 self.inputCount = 0;
	// 本地查询 或者 请求数据
	...
 [self.tableView reloadData];
}

核心代码

延迟1.5秒以后执行搜索,判读如果1.5秒之后传入的输入次数和现在的输入次数一致,说明用户1.5秒已经没有输入新内容了,加在新数据。这个时间可以自己调整

[self performSelector:@selector(searchKeyword:) withObject:@(self.inputCount) 
afterDelay:1.5f];

总结

到此这篇关于iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能的文章就介绍到这了,更多相关ios UITextField自定义搜索框 实时搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • iOS的CoreAnimation开发框架中的Layer层动画制作解析

    iOS的CoreAnimation开发框架中的Layer层动画制作解析

    在iOS中UIView层的属性会映射到CoreAnimation框架的CALayer,这里我们来看一下iOS的CoreAnimation开发框架中的Layer层动画制作解析,需要的朋友可以参考下
    2016-07-07
  • 3分钟实现iOS语言本地化/国际化(图文教程)

    3分钟实现iOS语言本地化/国际化(图文教程)

    这篇文章主要介绍了3分钟实现iOS语言本地化/国际化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • iOS模块化开发浅析

    iOS模块化开发浅析

    本文给大家分析了IOS在模块发开发时候的相关注意点以及简单代码做了分享,有兴趣的朋友参考学习下。
    2018-04-04
  • Xcode清理缓存和垃圾文件的教程

    Xcode清理缓存和垃圾文件的教程

    下面小编就为大家分享一篇Xcode清理缓存和垃圾文件的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS App引导页开发教程

    iOS App引导页开发教程

    这篇文章主要为大家详细介绍了iOS App引导页开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • IOS 创建彩色二维码实例详解

    IOS 创建彩色二维码实例详解

    这篇文章主要介绍了IOS 创建彩色二维码实例详解的相关资料,这里提供实例代码,需要的朋友可以参考下
    2016-12-12
  • iOS中UILabel设置居上对齐、居中对齐、居下对齐及文字置顶显示

    iOS中UILabel设置居上对齐、居中对齐、居下对齐及文字置顶显示

    这篇文章主要给大家介绍了关于iOS中UILabel如何设置居上对齐、居中对齐、居下对齐及文字置顶显示效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • 详解iOS获取通讯录的4种方式

    详解iOS获取通讯录的4种方式

    这篇文章主要为大家详细介绍了iOS获取通讯录的4种方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • IOS多线程开发之线程的状态

    IOS多线程开发之线程的状态

    这篇文章主要介绍了IOS多线程开发之线程的状态 的相关资料,需要的朋友可以参考下
    2015-12-12
  • iOS 中使用tableView实现右滑显示选择功能

    iOS 中使用tableView实现右滑显示选择功能

    这篇文章主要介绍了iOS 中使用tableView实现右滑显示选择功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07

最新评论