Search Bar click detect

2019-07-09 13:08发布

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.

3条回答
Summer. ? 凉城
2楼-- · 2019-07-09 13:30

Swift version of the answer:

  1. Add UISearchBarDelegate to your view controller Assign its
  2. delegate to self searchBar.delegate = self Use
  3. searchBarShouldEndEditing or searchBarSearchButtonClicked

     func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
       return true
    }
    

or

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
}
查看更多
We Are One
3楼-- · 2019-07-09 13:38

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;
}
查看更多
Lonely孤独者°
4楼-- · 2019-07-09 13:43

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;
}
查看更多
登录 后发表回答