我有一个UITextField,我想创建一些类似于ios联系人应用程序中的下拉菜单。
当用户开始输入时,我希望菜单下拉。它实际上并不需要根据名称来限制它显示的数据,但如果可以的话它会很好(例如:如果用户键入“m”它只显示以m开头的字符串,依此类推)。如果用户选择一个,则该类型将被发送到将显示它的UITextField。如果有这样的开源选择器,它会很棒。如果没有,是否有办法提供包含数组中所有项目的内容。这不一定非常复杂,它不必限制用户输入或显示的数据。
答案 0 :(得分:2)
基于this链接的回复。将向您展示如何在自动完成的下拉列表中获取URL值。
您需要创建一个UITable来显示值
autocompleteTableView = [[UITableView alloc] initWithFrame:
CGRectMake(0, 80, 320, 120) style:UITableViewStylePlain];
autocompleteTableView.delegate = self;
autocompleteTableView.dataSource = self;
autocompleteTableView.scrollEnabled = YES;
autocompleteTableView.hidden = YES;
[self.view addSubview:autocompleteTableView];
您需要在编辑字段时显示表格
- (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 {
// Put anything that starts with this substring into the autocompleteUrls array
// The items in this array is what will show up in the table view
[autocompleteUrls removeAllObjects];
for(NSString *curString in pastUrls) {
NSRange substringRange = [curString rangeOfString:substring];
if (substringRange.location == 0) {
[autocompleteUrls addObject:curString];
}
}
[autocompleteTableView reloadData];
}
不要忘记将适当的UITable和UITextfield代理添加到.h文件中。