【问题标题】:How to click Cancel button one time in SearchBar when it's not focus没有焦点时如何在SearchBar中单击一次取消按钮
【发布时间】:2016-04-26 06:05:54
【问题描述】:
我在 NavigationBar 中添加了 SearchBar 视图。
[self.navigationController.view addSubview:self.searchBar];
当我搜索时...
搜索完成...
如果我想取消(删除)搜索栏,我必须点击取消按钮两次才能删除搜索栏。 (一次用于焦点搜索栏,一次用于点击取消)。
如何在 SearchBar 中一键取消类似 (x) 按钮(明文按钮)?
或 SearchBar 如何始终专注? (这样我可以点击取消来关闭搜索栏)
【问题讨论】:
标签:
ios
objective-c
iphone
uinavigationbar
uisearchbar
【解决方案1】:
搜索后不要关闭键盘
删除这一行 [searchBar resignFirstResponder]
会有用的
【解决方案2】:
将搜索栏委托方法实现为:
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar {
self.navigationController.navigationBarHidden = NO;
[mySearchBar setAlpha:0.0];
}
希望你通过这样做得到了这个想法。如果您愿意,您也可以将其直接添加到导航控制器本身,然后单独显示/隐藏searchBar。
【解决方案3】:
-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
controller.active = YES;
[self.view addSubview:controller.searchBar];
[self.view bringSubviewToFront:controller.searchBar];
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
tableView.frame = self.archiveListTblView.frame;
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
controller.active=NO;
[self.view addSubview:controller.searchBar];
}
【解决方案4】:
当搜索栏从第一响应者那里退出时,取消按钮被禁用。
所以你应该手动启用取消按钮。
试试这个:
[searchBar resignFirstResponder];
[(UIButton *)[searchBar valueForKey:@"_cancelButton"] setEnabled:YES];