13

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

UITableView 为空,用户点击 UISearchBar,并调出键盘。一旦用户点击搜索按钮

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

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

发生与以前相同的步骤,但键盘从未关闭。我有一种感觉,其他东西正在成为响应者,我只需要一点清晰来了解实际发生的事情。

4

2 回答 2

31

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

[self.view endEditing:YES];

所有意见都将辞去第一响应者。

于 2010-08-06T13:32:21.067 回答
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];
}
于 2016-09-02T17:34:13.547 回答