我在TableViewController的标题中添加了一个简单的搜索栏并实现了委托。一切正常。
非常奇怪的是取消仅在第二次点击后调用。
编辑:https://www.youtube.com/watch?v=ehnA2kmGqcQ&feature=youtu.be
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
searchBar = UISearchBar(frame: CGRectMake(0, 0, tableView.frame.size.width, 0))
searchBar.barTintColor = kbackgroundColor
searchBar.showsCancelButton = true
searchBar.showsSearchResultsButton = false
searchBar.tintColor = UIColor.whiteColor()
searchBar.delegate = self
return searchBar
}
return nil
}
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
searchInProgress = false
loadObjects()
searchBar.resignFirstResponder()
}
答案 0 :(得分:1)
问题在于您滥用“取消”按钮。在您的视频中,您就是这样做的:
您可以选择搜索字段中的所有文字。
删除搜索字段中的所有文字。
过滤未停止,因此您点按取消。
没有任何反应,因此您再次点击取消。
但是第3步开始是错误的。当删除搜索字段中的所有文本时,过滤应已停止。您应该使用搜索栏委托方法检测这种情况并做出相应的响应。
正如我在其他评论中提到的,UISearchController在这里可以提供很大的帮助。这种情况 - 过滤表视图 - 正是它的目的。它将有助于正确管理搜索栏的行为。
答案 1 :(得分:0)
我相信这个问题:取消按钮只会在焦点时触发