【问题标题】:Make Cancel button in search bar active after search button tapped点击搜索按钮后,激活搜索栏中的取消按钮
【发布时间】:2016-09-06 17:56:47
【问题描述】:

我有搜索栏和取消按钮,点击搜索按钮后,它会显示结果,但取消按钮处于非活动状态,我需要单击两次才能使其工作并返回初始结果。搜索结果出现后如何激活取消按钮?

这是我的代码

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

【问题讨论】:

  • 也许你可以试试主线程

标签: ios swift uisearchbar


【解决方案1】:

在搜索栏的searchBarSearchButtonClicked委托方法中添加启用取消按钮的代码 这样在点击搜索栏后,取消按钮仍然会被启用。

所以完整的代码 sn-p 将是

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

}

编码愉快...

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我在searchBarSearchButtonClicked 中的searchBar.endEditing(true) 之后调用该函数,但仍然不起作用
    • 放到searchBarSearchButtonClicked 的最后一行再查,不知道为什么打了这么多次setShowsCancelButton
    • 谢谢!它工作得很好,没有你的帮助我将无法做到
    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多