我有一个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
方法会返回一个空字符串作为搜索文本。因此,我无法知道用户是否正在对着他们的电话说话,或者他们是否删除了该字段中的所有文本。预期会出现这种情况吗?
答案 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];
}