how to show cancel button of searchbar?

有些话、适合烂在心里 提交于 2019-12-04 00:18:37

Objective 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];
}

Swift

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

Use this code to show/Hide the cancel Button in SearchBar

As user will start the Editing in SearchBar SHow the Cancel Button.

Below methods will only be accessible if you have set the delegate of SearchBar properly.

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

Hide The CancelButton as User Click on Cancel Button

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

Use this code

searchBar.showsCancelButton=YES;
Mahesh Peri

Use this code for showing cancel button. It will show button when you will enter text in searchBar.

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

Swift 4:

Below 2 lines of code worked for me to show cancel button:

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

Calling inside searchBarTextDidBeginEditing() method will show cancel button after clicking on search bar.

waheeda

You need to use UISearchDisplayController, that will hide navigation bar automatically for you. Here is the code,

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

You will have to implement protocols UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDelegate, UITableViewDataSource in .h file.

also _searchBar & searchDisplayController are variables defined in .h file.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!