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中创建表格类视图WBDataGridView的实例代码

    iOS中创建表格类视图WBDataGridView的实例代码

    这篇文章主要介绍了iOS中创建表格类视图WBDataGridView的实例代码,需要的朋友可以参考下
    2017-02-02
  • iOS开发中常用的各种动画、页面切面效果

    iOS开发中常用的各种动画、页面切面效果

    这篇文章主要介绍了iOS开发中常用的各种动画、页面切面效果 的相关资料,需要的朋友可以参考下
    2016-04-04
  • IOS 通讯录信息读取兼容的实现方法

    IOS 通讯录信息读取兼容的实现方法

    这篇文章主要介绍了IOS 通讯录信息读取兼容的实现方法的相关资料,这里提供实现方法帮助大家实现这样的功能,需要的朋友可以参考下
    2017-08-08
  • 解决苹果ios用js的Date()出现NaN的问题

    解决苹果ios用js的Date()出现NaN的问题

    下面小编就为大家分享一篇解决苹果ios用js的Date()出现NaN的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • iOS实现模拟定位功能的示例代码

    iOS实现模拟定位功能的示例代码

    这篇文章主要介绍了iOS实现模拟定位功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 详解在iOS11下app图标变空白的问题解决方法

    详解在iOS11下app图标变空白的问题解决方法

    本篇文章主要介绍了详解在iOS11下app图标变空白的问题解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 详解如何使用ReactiveObjC

    详解如何使用ReactiveObjC

    RAC 指的就是 RactiveCocoa ,是 Github 的一个开源框架,能够通过信号提供大量方便的事件处理方案,让我们更简单粗暴地去处理事件,现在分为 ReactiveObjC(OC) 和 ReactiveSwift(swift)。本文将详细介绍如何使用ReactiveObjC。
    2021-06-06
  • IOS实现验证码倒计时功能(一)

    IOS实现验证码倒计时功能(一)

    这篇文章主要介绍了IOS实现验证码倒计时功能,点击获取验证码,进入时间倒计时,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • iOS UITableView 与 UITableViewController实例详解

    iOS UITableView 与 UITableViewController实例详解

    这篇文章主要介绍了iOS UITableView 与 UITableViewController实例详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 浅谈iOS11新特性:新增拖拽交互体验

    浅谈iOS11新特性:新增拖拽交互体验

    这篇文章主要介绍了浅谈iOS11新特性:新增拖拽交互体验,iOS11新引入了拖拽相关的API可以帮助开发者快速的构建拖拽交互,在iOS11中,使用这种API进行APP的开发为设计提供了一种全新维度的用户交互方式。
    2017-12-12

最新评论