iOS Swift-searchBarCancelButtonClicked打印显示在日志中,但未返回函子

时间:2018-07-21 14:32:05

标签: ios swift uisearchbar uisearchbardelegate

这是我的代码:

    extension MyViewController: UISearchBarDelegate {

      // MARK: - UISearchBar Delegate
      func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
        filterContentForSearchText(searchBar.text!, scope: searchBar.scopeButtonTitles![selectedScope])
      }

      // MARK: - Cancel
      func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {

      myFunc()

      print("Cancel")
      searchBar.resignFirstResponder()

      }

}

单击取消后,所有操作均按预期完成,并且Xcode日志显示打印“取消”,但未执行功能“ myFunc”。

有什么解决的办法吗? 谢谢!

编辑:(有关更多信息)

当我单击搜索栏时,我有一个隐藏的按钮:

func filterContentForSearchText(_ searchText: String, scope: String = "xyz") {
        self.exampleButton.alpha = 0.0
        ....
        ...

函数“ myFunc”如下:

func myFunc(){

    self.exampleButton.alpha = 1.0

}

我也试图纠正我想要的东西:

      // MARK: - Cancel
      func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {

      self.exampleButton.alpha = 1.0

      print("Cancel")
      searchBar.resignFirstResponder()

      }

但也不起作用。


我的目的是在取消搜索后使exampleButton出现。

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题所在。

而不是将按钮隐藏在:

  func filterContentForSearchText(_ searchText: String, scope: String = "xyz")

要使其在单击搜索栏时被隐藏,我应该在以下位置使用它:

    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar)

现在,当我让它重新出现在搜索驳回中时,位于:

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar)

它运作完美!