0
我有一些名稱的數組。當我打字時,我創建了一個表格,並顯示一個包含可能數據的自動完成表格。一旦我選擇它出現在文本框中。 實際問題:我想要做的是,如果在選擇第一個建議後,我開始打字並插入一個「,」並開始再次輸入,我也需要自動完成功能。到目前爲止,我已經設法讓它只能用於初始文本。如何在文本框中執行多個自動完成功能?
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
_autocompleteTableView.hidden = NO;
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring stringByReplacingCharactersInRange:range withString:string];
[self searchAutocompleteEntriesWithSubstring:substring];
return YES;
}
- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring {
[_autocompleteFriends removeAllObjects];
NSString *pattern = [NSString stringWithFormat:@".*\\b%@.*", [NSRegularExpression escapedPatternForString:substring]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self MATCHES[c] %@", pattern];
_autocompleteFriends= [_arrFriendName filteredArrayUsingPredicate:predicate].mutableCopy;
[_autocompleteTableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _autocompleteFriends.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;
static NSString *AutoCompleteRowIdentifier = @"AutoCompleteRowIdentifier";
cell = [tableView dequeueReusableCellWithIdentifier:AutoCompleteRowIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AutoCompleteRowIdentifier];
}
cell.textLabel.text = [_autocompleteFriends objectAtIndex:indexPath.row];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
_txtName.text = selectedCell.textLabel.text;
[_autocompleteTableView setHidden:YES];
}
@end
也許你可以將NSString分隔成一個由逗號分隔的數組,並將它的最後一個Object用於自動完成:'[[searchString componentsSeparatedByString:@「,」] lastObject];' – 3vangelos
請你詳細說明一下。 @ 3vangelos –