UISearchBar:如何防止取消按钮清除文本?

我的应用程序中有一个带有UISearchBar的屏幕。 当用户进入屏幕时,搜索栏中可能已存在文本。 如果用户然后点击该字段然后点击取消,则不应清除搜索栏的内容。

这可以实现吗? 我尝试实现searchBarCancelButtonClicked ,但我对text属性的修改被忽略,文本字段仍然被清除。

我遇到了同样的问题并通过手动跟踪是否按下取消按钮的状态解决了这个问题。 如果是,请在searchBar结束编辑时重置文本,因为在searchBarCancelButtonClicked中修改searchBar.text不起作用:

这是我在UISearchBarDelegate类中所做的:

 var searchTerms = "" var searchWasCancelled = false func searchBarTextDidBeginEditing(searchBar: UISearchBar) { searchWasCancelled = false } func searchBarCancelButtonClicked(searchBar: UISearchBar) { searchWasCancelled = true } func searchBarTextDidEndEditing(searchBar: UISearchBar) { if searchWasCancelled { searchBar.text = self.searchTerms } else { searchTerms = searchBar.text } }