定期在UITextField

时间:2016-08-31 04:38:25

标签: ios swift uisearchcontroller

我尝试在link的桌面视图上使用搜索控制器。如果用户暂停在搜索栏上键入0.3秒,则会触发获取方法。

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

我想要的是触发一种方法,例如当用户停止输入0.3秒时。有没有办法做到这一点?或者我使用搜索控制器+获取数据的概念出错?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用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
}