我的代码在searchBarCancelButtonClicked:
中运行我想在用户点击远离搜索栏时运行相同的代码,即使不一定点击取消也是如此。我目前的代码如下,但有一个我无法弄清楚的问题。我在搜索栏下方放置了一个UIView,当点击它时会运行一个能够实现我想要的方法。
问题在于,当搜索栏处于活动状态时,与uisearchbar关联的半透明视图出现在我的视图之上,单击视图仍然只是取消搜索栏,但不会运行我的方法。解除搜索栏后,单击视图会运行我的方法,所以我知道这没关系。基本上我需要能够在搜索栏是第一个响应者时激活视图手势。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar {
UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissSearch:)];
UIView *transparentView = [[UIView alloc]initWithFrame:transparentViewRect];
[transparentView setBackgroundColor:[UIColor blackColor]];
[transparentView addGestureRecognizer:singleTap];
[self.view addSubview:transparentView];
[self.view bringSubviewToFront:transparentView];
return YES;
}
- (void) dismissSearch:(UITapGestureRecognizer *)tapGesture
{
//Run my code
}
答案 0 :(得分:2)
我猜您可以使用searchBarShouldEndEditing:
或searchBarTextDidEndEditing:
委托方法......
答案 1 :(得分:0)
要解决上述问题(当使用搜索结果点击UITableView上的单元格时),请在searchBarShouldEndEditing: or searchBarTextDidEndEditing:
方法上使用此条件:
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
if (self.searchDisplayController.searchResultsTableView.hidden) {
self.searchBar.hidden = true;
}
return true;
}