UISearch bar不区分大小写?

在表格视图中,我设置了一个UISearchBar,设置委托并添加协议。

当用户点击一个字时,除了“网球”的search与“网球”不同之外,一切都是可以的。

如何使search栏不区分大小写的UISearchBar? 这里是我的代码,我认为evrything发生:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { [tableData removeAllObjects];// remove all data that belongs to previous search if([searchText isEqualToString:@""]||searchText==nil){ [myTableView reloadData]; return; } NSInteger counter = 0; for(NSString *name in dataSource) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; NSRange r = [name rangeOfString:searchText]; if(r.location != NSNotFound) [tableData addObject:name]; counter++; [pool release]; } [myTableView reloadData]; } 

最简单的方法可能是

  NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

试试这个,这对你真的很有帮助。如果是这样的话请不要忘记把我投票给我

 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { [DetailSearchArray removeAllObjects];// remove all data that belongs to previous search if([searchText isEqualToString:@""]){ [table reloadData]; return; } NSInteger counter = 0; NSArray *result = [[NSArray alloc] initWithArray:[resultArray filteredArrayUsingPredicate:predicate]]; for (NSString *name in resultArray ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch]; //NSRange r=[name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])]; if(r.location != NSNotFound) { if(r.location== 0)//that is we are checking only the start of the names. { [DetailSearchArray addObject:name]; } } } counter++; [pool release]; } [table reloadData]; } 

当你做比较时,试着用小写字体来做。

 NSRange r = [[name lowercaseString] rangeOfString:[searchText lowercaseString]]; 

只是澄清,这不会改变任何的价值观,只是返回一个小写版本的原始,然后你用来做比较,

这里有一些'lowercaseString'函数,不知道我在哪看到这个,因为我跟iPhone没有任何关系,我敢肯定,如果你google的话,你会发现一些东西。

Interesting Posts