使用searchDisplayController搜索UISearchBar中的冻结

时间:2015-07-30 16:40:54

标签: ios objective-c search

我有curl -X POST -d "script=$(cat test.groovy)" http://my/domain/jenkins/scriptText Result: 4 UISearchDisplayController很好地合作。 UISearchBar会在用户输入时正确返回结果,但当用户点击键盘上的搜索按钮并触发shouldReloadTableForSearchString时, 最终搜索结果正确显示后会发生奇怪的事情并且用户在搜索栏上点击“取消”。一旦用户重新激活搜索,搜索就会打开,但光标不会闪烁,搜索结果不会显示,键盘在每个按键上看起来都会锁定,如附图所示。应该有"测试"的结果,但没有任何事情发生,并且似乎有些东西b / c最后按下的键(" T")没有回头到键盘。

我不想包括代码b / c有很多活动部件,但如果任何代码有帮助,我可以快速包含它。谢谢你的帮助。

更新:它不仅仅是在用户提交查询后 - 如果他们在输入查询后向下滚动查看结果后触摸了结果searchBarSearchButtonClicked,然后点击取消,他们& #39;再次激活searchBar后会看到冻结的光标和破碎的搜索(同一图像适用)。

第二次更新:仅当我在viewWillLayoutSubviews中搜索处于活动状态时隐藏/取消隐藏导航栏时,才会发生这种情况。有任何想法吗?非常感谢任何帮助!

searchDisplayController.searchResultsTableView

enter image description here

最后更新:当隐藏/取消隐藏代码分别放入searchDisplayControllerWillBeginSearch和searchDisplayControllerWillHideSearch时,searchBar会错误地取消隐藏导航栏下方的20px:enter image description here

2 个答案:

答案 0 :(得分:0)

通过添加以下代码修复它:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    [self.searchDisplayController.searchBar becomeFirstResponder];
}

答案 1 :(得分:0)

UISearchDisplayController正在使用UITableView来显示搜索结果。无论何时滚动或加载新单元格,都会调用viewWillLayoutSubviews。这导致应用程序冻结。尝试将setNavigationBarHidden代码移动到由其他一些操作触发的单独方法中。