closuresUISearchBar

我有在searchBarCancelButtonClicked:中运行的代码searchBarCancelButtonClicked:我想运行相同的代码时,用户点击离开searchsearchBarCancelButtonClicked: ,即使取消不一定是点击。 我目前的代码是在下面,但有一个问题,我不明白。 我已经在search栏下面放置了一个UIView,当点击运行一个方法,做我想要的。

问题是,当search栏处于活动状态时,与uisearchbar关联的半透明视图出现在我的视图之上,单击该视图仍然会closuressearch栏,但不运行我的方法。 search栏解散后,单击视图确实运行我的方法,所以我知道这是好的。 基本上我需要能够使视图手势激活而search栏是第一响应者。

 - (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 } 

我想你可以使用searchBarShouldEndEditing:searchBarTextDidEndEditing:委托方法…

为了解决上述问题(当用search结果在UITablewView上点击单元格时),在searchBarShouldEndEditing: or searchBarTextDidEndEditing:方法上使用这个条件:

 - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { if (self.searchDisplayController.searchResultsTableView.hidden) { self.searchBar.hidden = true; } return true; }