我的应用中有一个UISearchBar
的屏幕。当用户进入屏幕时,搜索栏中可能已存在文本。 如果用户随后点击该字段然后点击取消,则不应清除搜索栏的内容。
这可以实现吗?我尝试实现searchBarCancelButtonClicked
,但我对text属性的修改被忽略,文本字段仍然被清除。
答案 0 :(得分:7)
我遇到了同样的问题并通过手动跟踪是否按下取消按钮的状态解决了这个问题。如果是,请在搜索栏结束编辑时重置文本,因为修改searchBar.text
中的searchBarCancelButtonClicked
无法正常工作:
这就是我在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
}
}