2010-08-05 87 views
1

没有人知道如何测试UISearchBar中最后一个字符何时被删除。即你键入...UISearchBar:textDidChange:空值时返回值?

Gary > return "Gary" 
Gar > return "Gar" 
Ga > return "Ga" 
G > return "G" 
    > return ??? 

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    [self FG_Filter:searchText]; 
} 

我在想这将是@“”但我无法正常工作。

千恩万谢

加里

回答

6

事实上,它返回nil。 (或者至少当我写我的searchBar:textDidChange:时,确实如此。)

但是,编写假定这可能是愚蠢的代码。苹果公司可能会改变它以返回@""下一个版本。相反,你最好检查一下你真正关心的内容:该字段是否为空?

if ([searchText length] == 0) { 
    // string is empty 
} 

如果您不希望改变FG_Filter,像这样将是一个安全的变化,也:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    [self FG_Filter:searchText ?: @""]; 
} 
+0

谢谢你,那正是我一直在寻找,出色答卷。非常感激。 – fuzzygoat 2010-08-05 21:10:46

+0

不客气。我很高兴我能帮上忙!我记得那里的零也让我感到吃惊...... – 2010-08-05 21:23:58

+0

我试过“if([searchText length] == 0)”,但它返回false。由于searchText在我写po时返回了“”searchText – Burak 2013-01-18 22:08:59

0

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range 
      replacementText:(NSString *)text 

在您的委托和测试,如果

[text length] == 0 && range.location == [searchBar.text length] - 1