UISearchBar: textDidChange: возвращать значение, когда пусто? - PullRequest
1 голос
/ 05 августа 2010

Кто-нибудь знает, как проверить, когда последний символ в 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];
}

Я думал, что это будет @ "", но у меня проблемы с тем, чтобы заставить это работать.

большое спасибо

Gary

Ответы [ 2 ]

6 голосов
/ 06 августа 2010

На самом деле, возвращается nil. (Или, по крайней мере, так было, когда я написал searchBar:textDidChange:.)

Но написание кода, который предполагает, что это, вероятно, глупо. Apple может изменить его, чтобы вернуть @"" в следующем выпуске. Вместо этого вам лучше проверить, что вас действительно волнует: поле пустое?

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

Если вы не хотите менять FG_Filter, то подобное тоже будет безопасным:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    [self FG_Filter:searchText ?: @""];
}
0 голосов
/ 05 августа 2010

Поместите

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

в ваш делегат и проверьте, если

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