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