Dismissing keyboard from UISearchBar when the X button is tapped
Updated for SWIFT 3:
Suppose that the user has entered a string in searchfield and clicks x the following code works to hide keyboard when x is pressed
`
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
{
if searchBar.text == nil || searchBar.text == ""
{
searchBar.perform(#selector(self.resignFirstResponder), with: nil, afterDelay: 0.1)
}
}
`
Toms answer got me thinking. If it is that the search bar is not yet the firstResponder when the user clicks the clear button we can just wait until it is, and then have it resignFirstResponder; i.e. along the lines of:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self performFilteringBySearchText: searchText]; // or whatever
// The user clicked the [X] button or otherwise cleared the text.
if([searchText length] == 0) {
[searchBar performSelector: @selector(resignFirstResponder)
withObject: nil
afterDelay: 0.1];
}
}
Works like a charm, and less hacky than Tom's IMHO.
This works:
[searchBar performSelector:@selector(resignFirstResponder) withObject:nil afterDelay:0.1];