iOS开发中 经常遇到搜索框实时根据输入内容进行网络请求 为避免输入内容过快进行网络请求太过频繁 特做以下限制
先申明一下以下属性 后面做限制使用
// 防止输入过进行网络请求程序崩溃
//记录当前时间
@property(nonatomic,strong)NSTimer *currentTimer;
//记录上次的时间
@property(nonatomic,strong)NSTimer *lastTimer;
//记录上一次输入的时间
@property(nonatomic,assign)long long previousInputTime;
在
textFieldTextChange
监听textField
的输入内容改变值里面进行操作 下面代码中requestData
为根据输入内容进行网络请求的操作
#pragma mark - textFieldDelegate
-(void)textFieldTextChange:(UITextField *)textField{
NSLog(@"textField1 - 输入框内容改变,当前内容为: %@",textField.text);
// 防止textField输入频率太快 接口请求太频繁导致程序崩溃===================================
NSTimeInterval time = [[NSDate date] timeIntervalSince1970] * 1000;
NSLog(@"self.previousTime = %lld, time = %lld time - self.previousTime = %lld",self.previousInputTime,(long long)time,(long long)time - self.previousInputTime);
self.currentTimer = [NSTimer scheduledTimerWithTimeInterval:0.5f target:self selector:@selector(requestData) userInfo:@"test" repeats:NO];
if (time - self.previousInputTime < 400) {
[self.lastTimer invalidate];
}
self.previousInputTime = (long long)time;
self.lastTimer = self.currentTimer;
// ==============================================================================
}
网友评论