2010-08-05 134 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