定期在 UITextField 触发方法

Fire method periodically at UITextField

我尝试在这个 的 tableview 上使用搜索控制器。如果用户在搜索栏上暂停输入 0.3 秒,则会触发获取方法。

我知道如何使用 updateSearchResultsForSearchController 在搜索栏中的每次更改时触发方法,但这不是我想要的。然后我使用搜索栏委托 searchBarSearchButtonClicked,但它仅在按下键盘上的搜索按钮时触发。

我想要的是触发一个方法,比如当用户停止输入 0.3 秒时。有什么办法吗?还是我对使用搜索控制器 + 获取数据的概念有误?

如有任何帮助,我们将不胜感激。

您可以使用 NSTimer 来实现此功能。只需在 updateSearchResultsForSearchController 中启动或重新启动计时器即可。一旦用户停止输入足够长的时间让计时器触发,您就可以执行搜索:

var searchTimer: NSTimer?

func updateSearchResultsForSearchController(searchController: UISearchController) {

    self.searchTimer?.invalidate()
    self.searchTimer = NSTimer.scheduledTimerWithTimeInterval(0.3,
                                                              target: self,
                                                              selector: #selector(ViewController.searchTimerExpired),
                                                              userInfo: nil,
                                                              repeats: false)
    }
}

@objc func searchTimerExpired() {
    self.searchTimer = nil

    // Do your search
}