我有一个iPhone应用程序,其中包含一个顶部带有UISearchBar的UITableView。当用户在UISearchBar中输入内容时,会对UITableView的内容进行适当的过滤。当用户删除UISearchBar中的所有文本时,搜索栏将不再是第一响应器,表视图再次变为未过滤状态。以下是相关的委托代码:
- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if(searchBar.text.length == 0)
{
[self.searchBar resignFirstResponder];
[self.myModel stopFiltering];
[self.tableView reloadData];
}
}这样做的问题是,当用户对着手机说话,并试图在搜索栏中进行语音到文本的转换(通过Siri)时,textdidChange方法会返回一个空字符串作为搜索文本。因此,我无法知道用户是对着他们的手机说话,还是删除了字段中的所有文本。这是预期的行为吗?
发布于 2013-04-06 10:10:06
尝试执行此操作,并检查是否可以进入IF statement:
- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText length]== 0)
{
[self.searchBar resignFirstResponder];
[self.myModel stopFiltering];
[self.tableView reloadData];
}
}发布于 2013-04-06 14:05:19
if([searchText length]> 0)
{
[self searchTableView];
}
else
{
[self btncloseClicked];}
- (void)btncloseClicked
{
[YourSearchBar performSelector: @selector(resignFirstResponder) withObject: nil afterDelay: 0.1];
[table_View reloadData];
}https://stackoverflow.com/questions/15840237
复制相似问题