UISearchBar和resignFirstResponder

时间:2010-08-06 13:25:49

标签: iphone uitableview uisearchbar first-responder

我有一个非常基本的UITableView,带有附加的UISearchBar,这里是发生的事情的流程

UITableView为空,用户点击UISearchBar,然后调出键盘。 用户点击“搜索”按钮后

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

工作得很好,并将键盘移开,并填充UITableView。 问题是任何后续搜索尝试。

发生与之前相同的步骤,但键盘永远不会被解雇。我有一种感觉,其他东西正在成为响应者,我只需要一点清晰度来理解实际发生的事情。

2 个答案:

答案 0 :(得分:30)

没有看到你的代码就很难猜到。但是,如果你包括:

[self.view endEditing:YES];

所有观点都会让第一响应者辞职。

答案 1 :(得分:2)

不完美,但确实适合我的情况。没有 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];
}