macos – 在文本字段中使用twitter用户名自动完成(可可)

macos – 在文本字段中使用twitter用户名自动完成(可可),第1张

概述我正在寻找NSTokenField,NSTextField和NSTextView而没有运气来执行以下 *** 作: 我正在写一个Twtitter客户端,当你想推特一个新的推文然后你开始写一个文本字段,例如: 要去煮咖啡,@ pe 当你开始写@时,我想帮助用户自动填写用户名,例如@peter.我有一个NSArray,其用户名如下: NSArray * usernames = [NSArray arrayWi 我正在寻找NSTokenFIEld,NSTextFIEld和NSTextVIEw而没有运气来执行以下 *** 作:

我正在写一个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用户名自动完成(可可)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存