我正在尝试使用UISearchDisplay控制器作为我的Web浏览器应用程序中的导航栏。但是,当用户激活搜索栏并决定取消输入文本时,无论是通过按灰色背景还是取消按钮,都会清除UISearchBar的文本。我尝试用UIWebView中的当前url替换空白文本,但它似乎不是合适的方式。它在Web视图上显示UITableView,即使搜索栏没有聚焦。
我的问题是,当我取消在搜索栏中输入文本时,有没有办法防止文本被清除。 Mobile Safari就是这样做的,但我不确定如何去做。我正在使用委托方法来检测编辑完成后文本是否为空白,我知道这是不对的。我查看了文档,但似乎没有什么突出的。
我可以发布代码,虽然它相当简单。
-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
if ([urlSearchController.searchBar.text isEqualToString:_webMain.request.URL.absoluteString]) {
[urlSearchController.searchBar setText:_webMain.request.URL.absoluteString];
[urlSearchController.searchResultsTableView setHidden:YES];
}
}
使用了 searchDisplayControllerDidEndSearch
,因为当用户按下取消时以及点击灰色叠加层时会调用它。唯一的问题是设置文本会使表格视图出现,并且文本字段在重新填充之前会闪烁空白。