解雇UISearchBar

时间:2013-02-06 18:29:18

标签: ios uisearchbar

我的代码在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
}

2 个答案:

答案 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;
}