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

时间:2014-02-13 18:44:20

标签: ios objective-c ios7 uisearchbar

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

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

1 个答案:

答案 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
    }
}