UISearchcontroller 搜索栏委托不工作

UISearchcontroller searchbar delegate not working

class PlaceSelectorViewController: UIViewController, GMSAutocompleteResultsViewControllerDelegate, UISearchBarDelegate {

我添加了搜索栏代理

searchController?.searchBar.delegate = self

并且我已经设置了委托。

但是方法

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    stopHighlight()
}

不会发生。

Delegate 已正确设置,stopHighlight() 是一个真正的函数

viewdidload 方法中创建 searchbar 的委托。

 override func viewDidLoad() {
            super.viewDidLoad()
            searchBarCustom.delegate = self
       }

或者您可以在情节提要中将其设置为

-因此代表将调用为

 func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        print("searchBarCancelButtonClicked")
    }

编辑: 对于 UISearchController

var searchController: UISearchController!
func configureSearchController() {
        // Initialize and perform a minimum configuration to the search controller.
        searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.dimsBackgroundDuringPresentation = false
        searchController.searchBar.placeholder = "Search here..."
        searchController.searchBar.delegate = self
        searchController.searchBar.sizeToFit()

        // Place the search bar view to the tableview headerview.
        tblSearchResults.tableHeaderView = searchController.searchBar
    }

就我而言,这是一个拼写错误。

确保您的@IBOutlet 名称与您的代表名称相似。

例如, @IBOutlet 弱变量 SearchBar: UISearchBar!

在 viewDidLoad() 中设置委托:

override func viewDidLoad() {
    super.viewDidLoad()
    SearchBar.delegate = self