2

我有一个 iPhone 应用程序,它的顶部包含UITableViewa 。UISearchBar当用户键入UISearchBarUITableView内容时,会被适当地过滤。当用户删除搜索栏中的所有文本时,UISearchBar搜索栏中不再是第一响应者,并且表格视图再次变为未过滤。这是相关的委托代码:

- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if(searchBar.text.length == 0)
    {
        [self.searchBar resignFirstResponder];
        [self.myModel stopFiltering];
        [self.tableView reloadData];
    }
}

这样做的问题是,当用户对着手机说话并尝试在搜索栏中进行语音到文本的转换(通过 Siri)时,该textdidChange方法会返回一个空字符串作为搜索文本。因此,我无法知道用户是否正在对着他们的手机讲话,或者他们是否删除了该字段中的所有文本。这种行为是预期的吗?

4

2 回答 2

1

试试这个并检查你是否可以进入IF statement

 - (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {
        if([searchText length]== 0)
        {
            [self.searchBar resignFirstResponder];
            [self.myModel stopFiltering];
            [self.tableView reloadData];
        }
    }
于 2013-04-06T02:10:05.600 回答
0
if([searchText length]> 0)
{
    [self searchTableView];
}
else
{
    [self btncloseClicked];

}

- (void)btncloseClicked
{
    [YourSearchBar performSelector: @selector(resignFirstResponder) withObject: nil afterDelay: 0.1];
    [table_View reloadData];
}
于 2013-04-06T06:05:18.590 回答