Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable cancel button with UISearchBar?

In the contacts app on the iPhone if you enter a search term, then tap the "Search" button, the keyboard is hidden, BUT the cancel button is still enabled. In my app the cancel button gets disabled when I call resignFirstResponder.

Anyone know how to hide the keyboard while maintaining the cancel button in an enabled state?

I use the following code:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {     [searchBar resignFirstResponder]; } 

The keyboard slides out of view, but the "Cancel" button to the right of the search text field is disabled, so that I cannot cancel the search. The contacts app maintains the cancel button in an enabled state.

I think maybe one solution is to dive into the searchBar object and call resignFirstResponder on the actual text field, rather than the search bar itself.

Any input appreciated.

like image 973
Christopher Avatar asked Apr 01 '12 21:04

Christopher


1 Answers

This method worked in iOS7.

- (void)enableCancelButton:(UISearchBar *)searchBar {     for (UIView *view in searchBar.subviews)     {         for (id subview in view.subviews)         {             if ( [subview isKindOfClass:[UIButton class]] )             {                 [subview setEnabled:YES];                 NSLog(@"enableCancelButton");                 return;             }         }     } } 

(Also be sure to call it anywhere after [_searchBar resignFirstResponder] is used.)

like image 97
David Douglas Avatar answered Sep 21 '22 18:09

David Douglas