I have a search bar and i want to detect when the user click it , and after to disable a button while the user is editing in search bar. How can i do this , because i was trying to do wha you will see above but it's never called.
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
NSLog(@"yes");
}
Other methods like searchDisplayController
are called.I set also
self.searchBar.delegate=self
but no result.
You can directly use the delegate of the UIsearchbar for getting the click event. you can use this delegate for it for checking the click. and for getting end editing this second one.
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
NSLog(@"Yes");
return YES;
}
End Editing
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
return YES;
}
The searchBarSearchButtonClicked:
method is called when the user taps the "Search" (return) button on the keyboard. From you question, I understand that you want to detect when the user taps the search bar, to enter text for the search. If that's the case, you need to implement the searchBarShouldBeginEditing:
or searchBarTextDidBeginEditing:
methods in the UISearchBarDelegate.
For example,
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
NSLog(@"yes");
return YES;
}
Swift version of the answer:
- Add UISearchBarDelegate to your view controller Assign its
- delegate to self searchBar.delegate = self Use
searchBarShouldEndEditing or searchBarSearchButtonClicked
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
return true
}
or
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
}