Reputation: 75
I'm implementing a search bar on my table, which should be pretty straight forward. I've got these:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
NSLog(@"searchBarTextDidBeginEditing");
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
NSLog(@"The search text is: %@", searchText);
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)theSearchBar {
NSLog(@"searchBarTextDidEndEditing");
[theSearchBar resignFirstResponder];
}
And searchBarTextDidBeginEditing fires, and I get that message in my log, but when I tap outside the search bar, above the keyboard, I don't get the searchBarTextDidEndEditing event so I can't make the keyboard disappear – the message doesn't even appear in the log.
The textDidChange is working, so it's just searchBarTextDidBeginEditing that isn't.
Any ideas? Thanks!!
Upvotes: 4
Views: 6733
Reputation: 71
The method
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
is only called when [searchBar resignFirstResponder]
is called.
The best place to call [searchBar resignFirstResponder]
is in the method
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
In swift:
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;
Upvotes: 1
Reputation: 122
Even i faced the same problem.
Please find with the solution below
Implement Below methods
1.searchBarTextDidEndEditing
2.searchBarSearchButtonClicked
and make sure you [UISearchchbar resignfirstresponder]
in the second method mentioned above
Upvotes: 9
Reputation: 591
Once I implemented searchBarSearchButtonClicked that solved it for me.
Upvotes: 2