嘿,我正在研究類似於通訊錄應用程序的基於導航的應用程序。當您在搜索欄中輸入內容並在表格中滾動時(在聯繫人應用程序中),鍵盤將消失。儘管我不認爲它會首先響應,因爲當我嘗試在 - (void)scrollViewDidScroll:(UIScrollView *)scrollView中執行此操作時,它會禁用取消按鈕,這在聯繫人應用程序中不會發生。基本上我的問題是我如何關閉鍵盤而不禁用取消按鈕,就像在聯繫人應用程序?解除與UISearchBar的鍵盤,而不會退出第一響應者
感謝
嘿,我正在研究類似於通訊錄應用程序的基於導航的應用程序。當您在搜索欄中輸入內容並在表格中滾動時(在聯繫人應用程序中),鍵盤將消失。儘管我不認爲它會首先響應,因爲當我嘗試在 - (void)scrollViewDidScroll:(UIScrollView *)scrollView中執行此操作時,它會禁用取消按鈕,這在聯繫人應用程序中不會發生。基本上我的問題是我如何關閉鍵盤而不禁用取消按鈕,就像在聯繫人應用程序?解除與UISearchBar的鍵盤,而不會退出第一響應者
感謝
(如自接聽評論在暗示),如果你想獲得表搜索行爲像內置的通訊錄應用程序,你不能只拍一個UISearchBar到一個視圖與一個UITableView ,而是需要使用UITableViewController和Search Display Controller
。此示例應用程序是一個完美的指南:
https://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html
那麼,就遇到了這個很老的問題。 當你開始滾動如下您可以啓用 '取消' 按鈕:
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
searchBar.resignFirstResponder()
let searchCancelButton = searchBar.valueForKey("cancelButton") as! UIButton
searchCancelButton.enabled = true // <-- THIS line is the trick
}
斯威夫特4
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
searchBar.resignFirstResponder()
let cancelButton = searchBar.value(forKey: "cancelButton") as! UIButton
cancelButton.isEnabled = true
}
是的!真的行! – 2016-07-24 16:16:58
優秀的答案。語法更新爲Swift 4 – 2017-12-31 22:06:51
WOW。哈哈,我使用的教程沒有使用searchdisplaycontroller,無論出於何種原因...使用它使得它正是我想要的。這很有趣,因爲我甚至與開始搜索時發生的疊加層的黑暗苦惱相匹配,但現在它發生了兩次,所以變得非常黑暗。 – Mike 2010-06-09 14:43:28