iOS 延迟搜索 实时搜索

51 篇文章 0 订阅

在实现搜索功能的时候,搜索框的值发生变化,我们不可能每次都去调用接口,应该等用户结束输入的时候再去调用接口搜索,记录搜索框的值发生变化的间隔,可以比较有效的监听用户的输入状态。

/// 上一个输入的时间,避免每次输入都调用搜索接口
@property (nonatomic, assign) __block NSTimeInterval preInputTime;
#pragma mark - 搜索相关
- (void)textFieldValueDidChange:(UITextField *)textField {
    NSLog(@"---------------来搜索");
    NSString *str = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    textField.text = str;
    // 0.3秒后,判断一次
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 取得当前时间戳  毫秒级
        NSTimeInterval currentTime = [JXUtils getNumberMilliSecondTimestampForNow];
        // 如果当前时间戳和上次的时间戳相差 0.3 秒,就进行搜索
        if (currentTime - self.preInputTime >= 300) {
            NSLog(@"------------------------------------去搜索");
            // 调用搜索接口进行搜索
            [self fetchGoodsByKeyword:str];
        }
    });
    // 记录上次的时间戳,毫秒级
    self.preInputTime = [JXUtils getNumberMilliSecondTimestampForNow];
}
- (UITextField *)searchTF {
    if (!_searchTF) {
        _searchTF = [UITextField textFieldWithTitle:@"" textColor:kFont_Medium_Color font:SYSFONT(14)];
        _searchTF.placeholder = @"请输入商品名称";
        _searchTF.clearButtonMode = UITextFieldViewModeWhileEditing;
        [_searchTF addTarget:self action:@selector(textFieldValueDidChange:) forControlEvents:UIControlEventEditingChanged];
    }
    return _searchTF;
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值