【发布时间】:2014-11-24 15:24:06
【问题描述】:
我正在开发新的 iOS 应用程序。在那个应用程序中,我有 5 个 UITextField,它们是 1.第一兴趣,第二兴趣最多5个兴趣。
我需要为这 5 个 UITextField 添加自动完成功能。我在谷歌上搜索了一天。我有一些论坛和教程。但我什至也尝试过使用 Github 链接。
根据我的要求,我有一组从我的服务器获取的数据。在那个数组中,我有咖啡、板球等数据。这是自动完成数据。每当用户在 UITextField 中输入文本时,我都需要显示该数组,如果它与我的数据数组相关,则需要在该 UITextFields 下方显示。
为此,我使用了以下代码。
**// 搜索文本字段中的字符串
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring stringByReplacingCharactersInRange:range withString:string];
[self searchAutocompleteEntriesWithSubstring:substring];
return YES;
}
**
// 从搜索文本字段中获取字符串并与自动完成数组进行比较
- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring {
// Put anything that starts with this substring into the autoCompleteArray
// The items in this array is what will show up in the table view
[autoCompleteArray removeAllObjects];
NSLog(@"autoCompleteArray %@",autoCompleteArray);
for(NSString *curString in elementArray) {
NSRange substringRangeLowerCase = [curString rangeOfString:[substring lowercaseString]];
NSRange substringRangeUpperCase = [curString rangeOfString:[substring uppercaseString]];
if (substringRangeLowerCase.length != 0 || substringRangeUpperCase.length != 0) {
[autoCompleteArray addObject:curString];
}
}
autoCompleteTableView.hidden = NO;
[autoCompleteTableView reloadData];
}
我在ViewDidLoad 方法中将 UITableView 创建为AutocompleteTableview。
**问题是,如果我输入文本为假设“c”,则从我的数据数组中显示任何文本包含为 tableview 中的“c”字母。但是,如果我键入“coff”,则该 UITableView 中不会显示任何数据。还如何验证哪个 UITextField 用户在tableviewdidselectrowatindexpath 委托方法中单击。我尝试为那些 UITextFields 分配标签,但它只在 UITextFields 委托方法中工作,而不是在其他地方。所以,每当我从 UITableView 中选择数据时,首先 UITextField 只获取数据而不是其他 UITextField。
请提出您宝贵的建议,这是在iOS中为多个UITextfields显示UITextfields的自动完成以及如何处理UITableView以显示数据的最佳方式。如果我的内容有任何错误,请原谅我,请提供您宝贵的建议以解决此问题。
谢谢****
【问题讨论】:
-
您是否尝试过四个问题中的任何一个或只是发布问题?
-
你输入的是**“coff”还是“coff”?
-
只有它的 coff,当我发布问题时,我让它变得大胆,这就是为什么它显示一些错误的原因
标签: ios iphone autocomplete textfield