UISearchBarDelegate的textDidChange方法具有语音到文本的奇怪行为

时间:2013-04-05 17:47:03

标签: ios objective-c uisearchbar siri

我有一个iPhone应用,其中包含UITableView,其顶部有UISearchBar。当用户输入UISearchBar时,UITableView的内容会被适当过滤。当用户删除UISearchBar中的所有文本时,搜索栏不再是第一响应者,并且表视图再次未经过滤。以下是相关的代表代码:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

if([searchText length]> 0)
{
    [self searchTableView];
}
else
{
    [self btncloseClicked];

}

- (void)btncloseClicked
{
    [YourSearchBar performSelector: @selector(resignFirstResponder) withObject: nil afterDelay: 0.1];
    [table_View reloadData];
}