解聘的UISearchBar(Dismissing UISearchBar)

2019-10-17 16:35发布

我有一个运行在代码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
}

Answer 1:

我想你大概可以使用searchBarShouldEndEditing:searchBarTextDidEndEditing:委托方法...



Answer 2:

为了解决上述问题(当在UITablewView与搜索结果电池接头),使用在此条件下searchBarShouldEndEditing: or searchBarTextDidEndEditing:方法:

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

  return true;
}


文章来源: Dismissing UISearchBar