Описание:
В настоящее время я использую следующий код, чтобы узнать, не прекратил ли пользователь вводить в searchBar. Я хотел бы отменить его каждый раз, когда пользователь сразу начинает печатать после 0.5
секунд.
Код:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
// your function here
}
Вопрос:
Как мне отменить DispatchQueue.main.asyncAfter
, если пользователь снова набирает текст в Swift3
?
Что я пробовал:
Я ранее пытался реализовать:
NSObject.cancelPreviousPerformRequests(withTarget: self)
self.perform(Selector(("searchForText:")), with: searchString, afterDelay: 0.5)
Однако задержка не работает должным образом.
Больше кода:
//In class SearchViewController: UITableViewController, UISearchResultsUpdating
func updateSearchResults(for searchController: UISearchController) {
let searchString: String = searchController.searchBar.text!
//This is what I previously tried.. which doesn't work...
//NSObject.cancelPreviousPerformRequests(withTarget: self)
//self.perform(Selector(("searchForText:")), with: searchString, afterDelay: 0.5)
//A struct with the first example code shown above.
Utils.Dispatch.delay(secondsToDelay: 1){
print("1 second has passed ! " + searchString)
}
}