场景
当我们在做一个搜索功能时,为了给用户一个更好的体验。
通常做法
设定一个延迟时间(1.0秒),如果输入的连续时间间隔小于1.0秒就不执行搜索方法,直到大于1.0秒。
在iOS下我们可以使用perform方法来实现,以swift为例:
1.创建一个延迟执行请求
/// 延迟方法
///
/// - Parameters:
/// - aSelector: 执行延迟搜索的方法
/// - anArgument: 搜索参数
/// - delay: 设定一个延迟时间(1.0秒)
open func perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval)
2.当输入的连续时间间隔小于设定的时间(1.0秒),取消历史创建的延迟请求。
/// 取消先前使用perform(_:with:afterDelay:)实例方法注册的延迟执行请求。
///
/// - Parameter aTarget: 先前使用perform(_:with:afterDelay:)实例方法注册的请求的目标。
open class func cancelPreviousPerformRequests(withTarget aTarget: Any)
Demo下载地址:LPDelayedSearch
结语
这个demo比较简单,如果大家有什么问题或者有更好的实现方式,欢迎随时交流。😊😊😊