2010-06-09 70 views
7

嘿,我正在研究類似於通訊錄應用程序的基於導航的應用程序。當您在搜索欄中輸入內容並在表格中滾動時(在聯繫人應用程序中),鍵盤將消失。儘管我不認爲它會首先響應,因爲當我嘗試在 - (void)scrollViewDidScroll:(UIScrollView *)scrollView中執行此操作時,它會禁用取消按鈕,這在聯繫人應用程序中不會發生。基本上我的問題是我如何關閉鍵盤而不禁用取消按鈕,就像在聯繫人應用程序?解除與UISearchBar的鍵盤,而不會退出第一響應者

感謝

+1

WOW。哈哈,我使用的教程沒有使用searchdisplaycontroller,無論出於何種原因...使用它使得它正是我想要的。這很有趣,因爲我甚至與開始搜索時發生的疊加層的黑暗苦惱相匹配,但現在它發生了兩次,所以變得非常黑暗。 – Mike 2010-06-09 14:43:28

回答

3

那麼,就遇到了這個很老的問題。 當你開始滾動如下您可以啓用 '取消' 按鈕:

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 
} 
+0

是的!真的行! – 2016-07-24 16:16:58

+0

優秀的答案。語法更新爲Swift 4 – 2017-12-31 22:06:51

相關問題