文章

Swift 实现延迟搜索

当我们在做一个搜索功能时,为了给用户一个更好的体验需要用到延迟搜索。

通常做法

设定一个延迟时间 1.0秒(根据需求调整),如果输入的连续时间间隔小于 1.0秒就不执行搜索方法,直到大于 1.0秒。

在 iOS 下我们可以使用 perform 方法来实现,以 Swift 为例。

  1. 创建一个延迟执行请求:

    1
    2
    3
    4
    5
    6
    7
    
     /// 延迟方法
     ///
     /// - Parameters:
     ///   - aSelector: 执行延迟搜索的方法
     ///   - anArgument: 搜索参数
     ///   - delay: 设定一个延迟时间(1.0秒)
     open func perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval)
    
  2. 当输入的连续时间间隔小于设定的时间 (1.0秒),取消历史创建的延迟请求:

    1
    2
    3
    4
    
     /// 取消先前使用 perform(_:with:afterDelay:) 实例方法注册的延迟执行请求。
     /// 
     /// - Parameter aTarget: 先前使用 perform(_:with:afterDelay:) 实例方法注册的请求的目标。
     open class func cancelPreviousPerformRequests(withTarget aTarget: Any)
    

    Demo 下载地址:LPDelayedSearch

结语

一个很简单的 Demo,就此完成。

本文由作者按照 CC BY 4.0 进行授权

© Liam. 保留部分权利。

本博客由 Jekyll 生成,使用 Chirpy 作为主题