我發現的大多數示例都在Objective - C
中,這對我來說很難理解,有人可以在Swift
中提供有關此問題的示例。 Here是一個解決方案,但它在Objective C
。UISearchBar在用戶停止輸入時檢測到
回答
你必須使用UISearchBarDelegate檢查一下:
func searchBarTextDidEndEditing(searchBar: UISearchBar) {
//DO what you want
}
記住補充:
searchBar.delegate = self
而且他的親戚協議:
UISearchBarDelegate
https://developer.apple.com/reference/uikit/uisearchbardelegate
該委託:當鍵盤消失searchBarTextDidEndEditing
被調用,使代碼添加到您的凸出:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
func searchBarTextDidEndEditing(searchBar:UISearchBar)print(「Type End」); } 最初我做了同樣的事情,但在類型結束後,該值不會打印在控制檯中,因此我認爲這不起作用。 – user2273146
您必須添加:searchBar.delegate = self –
覆蓋func viewDidLoad(){ super.viewDidLoad() //在加載視圖後,通常從一個筆尖執行任何其他設置。 /*設置代表*/ tableView.delegate =自 tableView.dataSource =自 searchBar.delegate =自 } 是的,我有提到,已經。 – user2273146
斯威夫特版本的鏈接:
var searchDelayer: Timer!
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchDelayer.invalidate(), searchDelayer = nil
if true {
searchDelayer = Timer.scheduledTimer(timeInterval: 1.5, target: self, selector: #selector(self.doDelayedSearch), userInfo: searchText, repeats: false)
}
}
func doDelayedSearch(_ t: Timer) {
assert(t == searchDelayer)
self.request(searchDelayer.userInfo!)
searchDelayer = nil
}
var priorSearchText = ""
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(self.request), object: priorSearchText)
priorSearchText = searchText
}
if true {
self.performSelector(#selector(self.request), withObject: searchText, afterDelay: 1.5)
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
print("after every text gets changed")
timer.invalidate()
timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(ViewController.output), userInfo: searchText, repeats: false)
}
func output(){
print("hello")
if timer.userInfo != nil {
print(timer.userInfo)
}
timer.invalidate()
}
這就是我解決我的問題的方法......謝謝大家的好評:) – user2273146
- 1. 當用戶在jquery中啓動/停止輸入時檢測
- 2. 檢測暫停時的UISearchBar
- 3. 檢測用戶在textarea中輸入,停止div刷新,JQUERY
- 4. 如何檢測用戶是否停止在EditText中輸入android
- 5. 停止在用戶輸入
- 6. 停止用戶輸入'char
- 7. 如何檢測輸入中的UISearchBar/UITextField的暫停?
- 8. 停止用戶輸入到編輯框?
- 9. 停止*作爲用戶輸入輸入
- 10. 當用戶的光標停止使用JQuery時檢測到
- 11. 當用戶停止觸摸UIButton時檢測到
- 12. 當用戶進入停止「輸入」鍵
- 13. 接觸停止時檢測
- 14. C++,'\ 0'的用戶輸入檢查在空格停止?
- 15. 防止UIGestureRecognizer檢測輸入
- 16. 檢測用戶何時停止在EditText中寫入以保存內容
- 17. 用戶在使用jQuery時不關注輸入框時檢測?
- 18. 檢測用戶是否正在輸入
- 19. 停止用戶輸入特殊字符
- 20. C - scanf沒有停止用戶輸入
- 21. 當檢測到重複值時停止插入表Flas SQLAlchemy
- 22. 獲取用戶輸入並在需要時停止循環C
- 23. 在等待用戶輸入STDIN.gets時停止腳本
- 24. Javascript:在用戶停止輸入時進行處理
- 25. 如何在用戶輸入「n」次時停止程序?
- 26. 如何在用戶未輸入值時停止程序崩潰?
- 27. 檢測用戶是否停止鍵入Angular 2
- 28. 在textarea中找到單詞後停止用戶輸入
- 29. 如何在沒有輸入時讓程序停止閱讀用戶輸入?
- 30. 提交用戶輸入時停止計時器 - Python
提出更明確,從而使他人能夠理解!你可以分享你提到的目標c的鏈接鏈接! – Lion
好吧,我會編輯我的問題。 – user2273146
您是否嘗試過searchBarTextDidEndEditing和searchBarShouldEndEditing? –