首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITextChecker completionsForPartialWordRange

UITextChecker completionsForPartialWordRange
EN

Stack Overflow用户
提问于 2016-01-08 23:16:14
回答 2查看 632关注 0票数 1

我正在构建自定义键盘扩展,并希望实现自动完成,就像苹果一样。在我看来,completionsForPartialWordRange方法返回按字母顺序排序的单词列表。如何获取按使用情况排序的结果?

EN

回答 2

Stack Overflow用户

发布于 2016-01-18 10:05:36

completionsForPartialWordRange:inString:language:的文档中写道:

数组中的字符串是按照它们应该呈现给用户的顺序排列的-也就是说,更可能的补全在数组中排在第一位。

但是,结果按照字母顺序进行了非常清晰的排序,并且“更可能的补全在数组中排在第一位”的说法是不正确的。下面使用iOS 9进行了测试:

代码语言:javascript
复制
NSString *partialWord = @"th";
UITextChecker *textChecker = [[UITextChecker alloc] init];
NSArray *completions = [textChecker completionsForPartialWordRange:NSMakeRange(0, partialWord.length) inString:partialWord language:@"en"];

适用于"th"的iOS word完成

代码语言:javascript
复制
thalami,
thalamic,
thalamus,
thalassic,
thalidomide,
thallium,
...
the,
...

因此,在获得单词补全后,需要再次对结果进行排序。

此方法的OS X NSSpellChecker版本没有同样的问题:

代码语言:javascript
复制
NSString *partialWord = @"th";

NSArray *completions = [[NSSpellChecker sharedSpellChecker] completionsForPartialWordRange:NSMakeRange(0, partialWord.length) inString:partialWord language:@"en" inSpellDocumentWithTag:0];

拼写检查器词典中完整单词的

列表,按照它们应该显示给用户的顺序排列。

适用于"th"的Mac补全

代码语言:javascript
复制
the,
this,
that,
they,
thanks,
there,
that's,
...

提交一份雷达错误报告将是一个好主意,这样该行为将有望在较新版本的iOS中得到修复。如果您想复制,我已经将其报告为rdar://24226582。

票数 2
EN

Stack Overflow用户

发布于 2018-07-19 17:23:54

Swift 4.0

代码语言:javascript
复制
 func autoSuggest(_ word: String) -> [String]? {
    let textChecker = UITextChecker()
    let availableLangueages = UITextChecker.availableLanguages
    let preferredLanguage = (availableLangueages.count > 0 ? availableLangueages[0] : "en-US");

    let completions = textChecker.completions(forPartialWordRange: NSRange(0..<word.utf8.count), in: word, language: preferredLanguage)

    return completions
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34680277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档