TableViewController中的SearchBar中的取消按钮需要双击

时间:2015-02-24 16:00:35

标签: ios objective-c swift uisearchbar

我在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()
        }

2 个答案:

答案 0 :(得分:1)

问题在于您滥用“取消”按钮。在您的视频中,您就是这样做的:

  1. 您可以选择搜索字段中的所有文字。

  2. 删除搜索字段中的所有文字。

  3. 过滤未停止,因此您点按取消。

  4. 没有任何反应,因此您再次点击取消。

  5. 但是第3步开始是错误的。当删除搜索字段中的所有文本时,过滤已停止。您应该使用搜索栏委托方法检测这种情况并做出相应的响应。

    正如我在其他评论中提到的,UISearchController在这里可以提供很大的帮助。这种情况 - 过滤表视图 - 正是它的目的。它将有助于正确管理搜索栏的行为。

答案 1 :(得分:0)

我相信这个问题:取消按钮只会在焦点时触发

UISearchBar cancel button not responding