我正在写一个Twtitter客户端,当你想推特一个新的推文然后你开始写一个文本字段,例如:
要去煮咖啡,@ pe
当你开始写@时,我想帮助用户自动填写用户名,例如@peter.我有一个NSArray,其用户名如下:
NSArray * usernames = [NSArray arrayWithObjects:@“@ andreas”,@“@ clara”,@“@ jeena”,@“@ peter”]
我该怎么做才能实现简单的自动完成?如果你不得不按F5或其他东西开始,我会很高兴.我遇到的问题是,使用NSTokenFIEld我不知道我应该如何对字符串进行标记化,使用NSTextFIEld它只能在我在推文开头写@username并且NSTextVIEw看起来真的很复杂而且对于这么简单而言太多了事情.
解决方法 最基本的实现涉及覆盖此方法…绝对不是最佳的,但你应该明白:- (NSArray *) completionsForPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index { // this would be defined somewhere else,but just for example.. NSArray *usernames = [NSArray arrayWithObjects:@"@andreas",@"@clara",@"@jeena",@"@peter"]; NSMutableArray *matchednames = [NSMutableArray array]; Nsstring *toMatch = [[self string] substringWithRange:charRange]; for(Nsstring *username in usernames) { [matchednames addobject:username]; } return matchednames; // that's it. }
一旦你开始拥有大量数据,你就需要采用策略来预先进行搜索,方法是将单词存储到哈希中,其中包含部分文本(例如,“Hello”将被放入4个不同的数组中NSDictionary键“H”,“He”,“Hel”,“Hell”……重复你的Lexicon中的每一个单词.这样快得多.
如果您想支持自动完成,只需在检测到控件中的文本发生变化时调用’complete:’方法.
总结以上是内存溢出为你收集整理的macos – 在文本字段中使用twitter用户名自动完成(可可)全部内容,希望文章能够帮你解决macos – 在文本字段中使用twitter用户名自动完成(可可)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)