UISearchController.updateSearchResults和UISearchbar.textDidChange之间的区别

Guy*_*her 1 search ios swift

如果我有UISearchController,有什么区别:

searchController.searchResultsUpdater = self

public func updateSearchResults(for searchController: UISearchController) {
        guard let searchText = searchController.searchBar.text else { return }

        // Use searchText
}
Run Code Online (Sandbox Code Playgroud)

searchController.searchBar.delegate = self

public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

    // /Use searchText
}
Run Code Online (Sandbox Code Playgroud)

Guy*_*her 5

updateSearchResults就像是超集textDidChange.

相似点:

在searchBox中输入新文本时,以及从搜索文本字段中清除文本时,都会调用它们

差异

updateSearchResults 在另外2个案例中被触发:

  • 当搜索栏成为第一个响应者时(相当于searchBarTextDidBeginEditing找到的方法)UISearchBarDelegate
  • 如果有一个链接到searchController的取消按钮,那么将调用该方法以表示搜索栏不再是第一响应者