15

当用户在搜索栏上开始编辑时,我想隐藏页面的导航栏,我还想显示一个取消按钮。
完成了,但是当我打开 UISearchBar 时无法访问我的取消按钮,谢谢大家。

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    self.navigationController.navigationBar.hidden=TRUE;
    CGRect r=self.view.frame;
    r.origin.y=-44;
    r.size.height+=44;

    self.view.frame=r;

    searchBar.showsCancelButton=TRUE;

}
4

6 回答 6

38

目标 C

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    self.navigationController.navigationBar.hidden = TRUE;
    CGRect r = self.view.frame;
    r.origin.y = -44;
    r.size.height += 44;
    self.view.frame = r;

    [searchBar setShowsCancelButton:YES animated:YES];
}


-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:NO animated:YES];
}

迅速

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
    self.navigationController.navigationBar.hidden = true
    var r = self.view.frame
    r.origin.y = -44
    r.size.height += 44

    self.view.frame = r
    searchBar.setShowsCancelButton(true, animated: true)
}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(false, animated: true)
}
于 2012-10-23T10:54:50.713 回答
16

使用此代码显示/隐藏取消按钮SearchBar

由于用户将在 SearchBar 中开始编辑,因此显示取消按钮。

仅当您正确设置了委托时,才能访问以下方法SearchBar

 -(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar
  {
    //This'll Show The cancelButton with Animation  
    [searchBar setShowsCancelButton:YES animated:YES];
    //remaining Code'll go here
  }

隐藏CancelButton用户点击取消按钮

 - (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar
 {
        //This'll Hide The cancelButton with Animation  
      [searchBar setShowsCancelButton:NO animated:YES];
       //remaining Code'll go here
 }
于 2012-10-23T11:05:05.330 回答
2

使用此代码

searchBar.showsCancelButton=YES;
于 2016-02-20T12:22:19.480 回答
2

斯威夫特 4:

下面的 2 行代码对我有用,可以显示取消按钮:

searchBar.setShowsCancelButton(true, animated: true)
searchBar.showsCancelButton = true

searchBarTextDidBeginEditing()单击搜索栏后,调用内部方法将显示取消按钮。

于 2018-10-18T05:01:34.170 回答
1

使用此代码显示cancel按钮。当您在 中输入文本时,它将显示按钮 searchBar

-(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:YES animated:YES];
}
于 2012-10-23T10:45:33.903 回答
0

您需要使用 UISearchDisplayController,它会自动为您隐藏导航栏。这是代码,

-(void) createSearchBar
{
     _searchBar          = [[SearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     _searchBar.delegate = self;
     [self.view addSubview:_searchBar];

    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:_searchBar contentsController:self];
    searchDisplayController.delegate = self;
    searchDisplayController.searchResultsDataSource = self;
    searchDisplayController.searchResultsDelegate = self;
    searchDisplayController.searchResultsTableView.sectionHeaderHeight = 10;
    searchDisplayController.searchResultsTableView.sectionFooterHeight = 0;
    [searchDisplayController.searchResultsTableView setSeparatorColor:[Color whiteColor]];  
}

您必须在 .h 文件中实现协议 UISearchBarDelegate、UISearchDisplayDelegate、UITableViewDelegate、UITableViewDataSource。

_searchBar 和 searchDisplayController 也是在 .h 文件中定义的变量。

于 2012-10-23T11:00:58.577 回答