Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resetting UISearchbar programmatically

Is there a possibility to reset a UISearchbar with searchDisplayController programmatically which is active and already contains text?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (tableView == self.searchDisplayController.searchResultsTableView) {
       searchDisplayController.searchResultsTableView.hidden = YES;
       searchBar.showsCancelButton = NO;
       [searchBar resignFirstResponder];
    }
}

This solution is working, but there is still text in the searchBar. If i add those lines of code:

searchBar.text = @"";

There is always a black transparent view left.

Any solutions?

like image 548
S. Braun Avatar asked Jan 18 '12 23:01

S. Braun


3 Answers

Here ya go. This is a delegate method called when the user hits cancel. If you want to wire it up differently just declare your search bar as an outlet and reference it. Anyway:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    searchBar.text = @"";
    [searchBar resignFirstResponder];   
}
like image 57
LJ Wilson Avatar answered Nov 16 '22 23:11

LJ Wilson


Pretty sure what you're looking for is UISearchDisplayController.active

From the SDK:

@property(nonatomic, getter=isActive) BOOL active

If you set this value directly, any change is performed without animation. Use setActive:animated: if a change in state should be animated.

When the user focus in the search field of a managed search bar, the search display controller automatically displays the search interface. You can use this property to force the search interface to appear.

like image 28
Brian Tanner Avatar answered Nov 17 '22 00:11

Brian Tanner


This thread is so old it has dust. Still here we are in swift so

<#your UISearchController variable#>.isActive = false
like image 2
RyanTCB Avatar answered Nov 16 '22 22:11

RyanTCB