我正在尝试为textfield提出建议。以下是我的代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"String output: %@", string);
NSString *stringToSearch = string;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate
// NSLog(@"Predicate has some ?: %i", [predicate ])
selectedOne = [colorAutocompleteArray filteredArrayUsingPredicate:predicate];
NSLog(@"count of selected: %lu",(unsigned long)[selectedOne count]);
NSLog(@"Select Array: %@", selectedOne);
NSLog(@"Text entered: %@", textField.text);
tableView.hidden = NO;
[tableView reloadData];
return true;
}
当我输入第一个字母表时,它可以正常工作,但只要我输入第二个字母,它就不会返回任何内容。然而,我尝试使用'包含'关键字它工作正常,但建议列表是大的,因为它检查包含任何字母的数组的每个entery。所以我想要类似于hasPrefix方法,所以我尝试了这个,但它永远不会在多个条目上返回任何东西。您的每一个评论将不胜感激。
感谢。
答案 0 :(得分:0)
问题是此方法一次返回一个字符而不是您输入的所有字符。
NSLog(@"String output: %@", string);
NSString *stringToSearch = string;
选中此项并获取整个textField字符串。
希望这会对你有帮助。
答案 1 :(得分:0)
试试这个
NSString *stringToSearch = [textField.text stringByAppendingString:string];
因为“字符串”仅返回您输入的最后一个字符,因此之间的不起作用