how to show cancel button of searchbar?

29,035

Solution 1

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

Solution 2

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
 }

Solution 3

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.

Solution 4

Use this code

searchBar.showsCancelButton=YES;

Solution 5

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];
}
Share:
29,035
nizama bunti
Author by

nizama bunti

Updated on October 18, 2020

Comments

  • nizama bunti
    nizama bunti over 3 years

    I want to hide the Navigation Bar of my page when the user start editing on the searchbar, I also want to show a cancel button.
    It is done but my cancel button is not accessible when I bring up the UISearchBar Thanks to All.

    - (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;
    
    }
    
  • Juancarlos Rodríguez
    Juancarlos Rodríguez over 10 years
    Nice answer! One other thing that I will like to know. Can I display programmatically the grey overlay when TextBeginEditing?
  • Jeremiah
    Jeremiah about 9 years
    As of iOS 8 you should no longer use UISearchDisplayController. Use UISearchController instead.
  • Will Von Ullrich
    Will Von Ullrich almost 6 years
    No setting that shows the cancel button while editing... nice miss apple :\