UISearchBar:textDidChange:空时返回值?

时间:2010-08-05 19:22:17

标签: iphone objective-c cocoa-touch uisearchbar

有没有人知道如何测试UISearchBar中的最后一个字符何时被删除。即你输入......

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

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

我以为它会是@“”但是我无法让它工作。

非常感谢

加里

2 个答案:

答案 0 :(得分:6)

实际上,它会返回nil。 (或者至少在我写searchBar:textDidChange:时这样做了。)

但编写假设可能是愚蠢的代码。 Apple可以将其更改为下一版本返回@""。相反,你最好检查你真正关心的是什么:字段是否为空?

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

如果你不想改变FG_Filter,那么这样的事情也是安全的改变:

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

答案 1 :(得分:0)

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range
             replacementText:(NSString *)text
在你的代表中

并测试是否

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