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

时间:2017-04-12 10:04:41

标签: ios swift search

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

searchController.searchResultsUpdater = self

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

        // Use searchText
}

searchController.searchBar.delegate = self

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

    // /Use searchText
}

1 个答案:

答案 0 :(得分:5)

updateSearchResults就像是textDidChange的超集。

相似点:

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

差异

updateSearchResults在另外两种情况下被触发:

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