場景
當我們在做一個搜索功能時,為了給用戶一個更好的體驗。
通常做法
設(shè)定一個延遲時間(1.0秒),如果輸入的連續(xù)時間間隔小于1.0秒就不執(zhí)行搜索方法,直到大于1.0秒。
在iOS下我們可以使用perform方法來實現(xiàn),以swift為例:
1.創(chuàng)建一個延遲執(zhí)行請求
/// 延遲方法
///
/// - Parameters:
/// - aSelector: 執(zhí)行延遲搜索的方法
/// - anArgument: 搜索參數(shù)
/// - delay: 設(shè)定一個延遲時間(1.0秒)
open func perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval)
2.當輸入的連續(xù)時間間隔小于設(shè)定的時間(1.0秒),取消歷史創(chuàng)建的延遲請求。
/// 取消先前使用perform(_:with:afterDelay:)實例方法注冊的延遲執(zhí)行請求。
///
/// - Parameter aTarget: 先前使用perform(_:with:afterDelay:)實例方法注冊的請求的目標。
open class func cancelPreviousPerformRequests(withTarget aTarget: Any)
Demo下載地址:LPDelayedSearch
結(jié)語
這個demo比較簡單,如果大家有什么問題或者有更好的實現(xiàn)方式,歡迎隨時交流。??????