开发者

UISearchBar and resignFirstResponder

I have a very basic UITableView with an attached UISearchBar, and here's the flow of what happens

UITableView is empty, user taps UISearchBar, and brings up keyboard. Once the user ta开发者_JAVA技巧ps the Search button

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; //move the keyboard out of the way
    //Code....  
}

Works just fine, and moves the keyboard out of the way, and populates the UITableView. The problem is any subsequent search attempts.

The same steps as before occur, however the keyboard is never dismissed. I have a feeling something else is becoming the responder, I just need a little clarity to understand what is actually occurring.


Without seeing your code it is difficult to guess. However, if you include:

[self.view endEditing:YES];

all views will resign first responder.


Not perfect but did work for my case. Will not work without dispatch_after

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if (!searchText.length) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [searchBar resignFirstResponder];
        });   
    }
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    [self performSearchWithString:searchBar.text];
    [searchBar resignFirstResponder];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜