带有iOS中build议列表的Textview
我试图实现一个textView中,当用户开始键入(让我们说名字)它会显示的build议,当他们点击它们被添加到textView比用户按逗号和再次相同的function另一个名字… 。
最后,textView中的文本应该看起来像这样…
阿隆,玛丽亚,亚历克斯,卡西
任何人都可以build议我怎样才能做到这一点? (它有点类似于发布这个问题时添加“标签”!!!)
谢谢。
你可以使用NSTokenFieldreplace,这里有一些库:
tokenField库
以下链接可能会帮助您: http : //www.raywenderlich.com/336/how-to-auto-complete-with-custom-values
遵循相同的stream程。 要在逗号之后获得自动填充build议,请修改委托方法,如下所示。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { autocompleteTableView.hidden = NO; NSString *names = [NSString stringWithString:textField.text]; NSArray* arr = [names componentsSeparatedByString:@","]; NSString *subString = [arr lastObject]; substring = [substring stringByReplacingCharactersInRange:range withString:string]; [self searchAutocompleteEntriesWithSubstring:substring]; return YES; }
提供一个名为“allNames”的NSMutableArray,其中包含您想要在build议列表中显示的所有名称,并将其用作以下内容:
- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring { [autocompleteUrls removeAllObjects]; for(NSString *curString in allNames) { NSRange substringRange = [curString rangeOfString:substring]; if (substringRange.location == 0) { [autocompleteUrls addObject:curString]; } } [autocompleteTableView reloadData]; }
当用户单击build议时,通过附加先前input的名称显示名称。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // set the textField.text by appending this name to already entered names }
我在移动应用程序中没有看到类似的东西。 你可以找库。 但如果你想自己做,我会build议你使用不可见的tableView。 当用户开始input名称时,你应该fetchData并显示在textView下的tableView。 这并不难。
我能想到的一个相对简单的方法来实现这个function,就是将一个input附件视图添加到键盘上,这将提供build议。
您不必篡改TextField本身,也不需要将build议合并到其他应用程序布局中。
例如,附件视图可以被给予对文本字段的引用并且通过以下来听取input:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged) name:UITextFieldTextDidChangeNotification object:textFieldWithSuggestions];
它将采用一种方法 – (void)textChanged; 在其中您将有机会将现有文本拆分为组件,使用逗号或任何符号作为分隔符,然后使用最后一个文本片段来执行可能的完成search。
它可能会提供这些build议作为一个button行例如(甚至在一个横向滚动scrollview允许许多build议),如果被推动,更新文本字段的文本通过replace最后的文本段与完成的string。
要跟踪哪个button代表哪个build议,只需根据您的search结果的索引给他们标签。 这样,您也只需要一个方法作为button的目标。
如果你想要一些库代码,那么你可以去这个https://github.com/hoteltonight/HTAutocompleteTextField这将帮助你
- alignment左右两边有“\ n”的标签
- iOS Facebook获取用户的电子邮件
- 在collections视图单元中播放video,例如在Facebook应用时间轴中播放的video
- 我怎样才能让我的项目的文件夹结构在Finder镜像?
- Swift:尝试打印CLLocationSpeed时发生exception“意外地发现零,同时展开一个可选值”
- 演示控件,自定义视图和更轻巧的UIViewControllers(第2部分)
- 为什么我的放松回落太远了?
- 在Swift中使用“Map”创build两个数组的超集
- iOS应用上的Youtube API v3。 我的API密钥不起作用,但其他人的密钥在同一个应用程序上工作。 错误403