簡體   English   中英

點擊搜索按鈕后,在搜索欄中激活取消按鈕

[英]Make Cancel button in search bar active after search button tapped

我有搜索欄和取消按鈕,點擊搜索按鈕后,顯示結果但取消按鈕無效,我需要點擊兩次才能使其工作並返回初始結果。 如何在搜索結果出現后激活取消按鈕?

這是我的代碼

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
    searchBar.endEditing(true)
    searchBar.setShowsCancelButton(true, animated: true)
    filterContentForSearchText(searchBar.text!, scope: "All")
    print(searchBar.text)
}
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
    searchBar.text = ""
    searchBar.resignFirstResponder()
    searchBar.setShowsCancelButton(false, animated: true)
    database = dataUtuh
    self.collectionView.reloadData()
}

我已經在viewDidLoad上實現了UISearchBarDelegatesearchBar.delegate = self

將代碼設置為在搜索欄的searchBarSearchButtonClicked委托方法中啟用取消按鈕這樣,在單擊搜索欄后,仍將啟用取消按鈕。

所以完整的代碼片段將是

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
    searchBar.endEditing(true)
    searchBar.setShowsCancelButton(true, animated: true)
    print(searchBar.text)


    for view in searchBar.subviews {
        for subview in view.subviews {
            if let button = subview as? UIButton {
                button.enabled = true
            }
        }
    }

}

快樂的編碼......

根據我的經驗,如果你執行searchBar.endEditing(true)那么取消按鈕被禁用,嘗試在此之后添加它以查看它是否正常工作,我也在我的項目中使用它:

func enableCancelButton (searchBar : UISearchBar) {
    for view1 in searchBar.subviews {
        for view2 in view1.subviews {
            if view2.isKindOfClass(UIButton) {
                let button = view2 as! UIButton
                button.enabled = true
                button.userInteractionEnabled = true
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM