定期在 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
}
我尝试在这个
我知道如何使用 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
}