点击搜索按钮后,在搜索栏中激活取消按钮

时间:2016-09-06 09:15:41

标签: ios swift uisearchbar

我有搜索栏和取消按钮,点击搜索按钮后,显示结果但取消按钮无效,我需要点击两次使其工作并返回初始结果。如何在搜索结果出现后激活取消按钮?

这是我的代码

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

2 个答案:

答案 0 :(得分:5)

将代码设置为在搜索栏的0 6.95272e-310 6.95272e-310 6.93208e-310 1.52888e-314 2.07341e-317 2.07271e-317 6.95272e-310 委托方法中启用取消按钮 以这种方式点击搜索栏后,仍然会启用取消按钮。

所以完整的代码段将是

searchBarSearchButtonClicked

快乐的编码......

答案 1 :(得分:4)

根据我的经验,如果您执行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
            }
        }
    }
}