我已经实现了一个自动完成表,当用户在我的表中选择模型字段时,它就会显示出来。
但是,我在控制它的显示方式时遇到了问题。我最终希望模型单元格向上滚动到顶部,自动完成表显示在它和键盘之间。我尝试的任何事情都不会导致这张 table 以那种性质行事。
在此示例中,当用户开始键入“F”时,自动完成表显示在标题下
自动完成表被初始化然后隐藏。只有当模型文本字段开始编辑时,它才会显示。
这是创建表格的代码。
CGRect frameAuto = CGRectMake(0, self.txt_model.frame.origin.y + self.txt_model.frame.size.height, self.view.frame.size.width, self.txt_model.frame.size.height * 3);
self.autocompleteTableView = [[UITableView alloc] initWithFrame:frameAuto style:UITableViewStylePlain];
self.autocompleteTableView.delegate = self;
self.autocompleteTableView.dataSource = self;
self.autocompleteTableView.scrollEnabled = YES;
self.autocompleteTableView.hidden = YES;
[self.view addSubview:self.autocompleteTableView];
我想我需要帮助的是,如何让模型文本字段向上移动到导航栏、显示自动完成表并为键盘留出空间?强>
更新 -- 将 autocompletetableview 添加为附件 View 可以做到这一点:
创建自动完成表
self.autocompleteTableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
self.autocompleteTableView.delegate = self;
self.autocompleteTableView.dataSource = self;
self.autocompleteTableView.scrollEnabled = YES;
self.autocompleteTableView.hidden = YES;
[self.view addSubview:self.autocompleteTableView];
设置文本框
self.txt_model.delegate = self;
self.txt_model.inputView = self.autocompleteTableView;
self.txt_model.inputAccessoryView = self.autocompleteTableView;
文本域代理
-(void)textFieldDidBeginEditing:(UITextField *)sender {
if(sender == self.txt_model){
NSLog(@"Moving view up");
[self.tblDetailsView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:3 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
在输入表单上显示整个自动完成表。
键盘不存在,文本字段也不存在。
最佳答案
要获得您正在寻找的效果,您可以尝试将其设置为您正在编辑的 UITextField 上的 inputAccessoryView。这会将它直接粘在键盘的顶部。我不确定 UITableView 作为 inputAccessoryView 的效果如何,但它可能值得一试。
self.textView.inputAccessoryView = autocompleteTableView
关于ios - 当用户点击带有 `UITableView` 的单元格时,在 `UITextField` 上添加自动完成列表/表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652821/