Я строю пользовательское расширение клавиатуры и хочу реализовать автозаполнение, как это делает Apple. Как я вижу, метод completionsForPartialWordRange
возвращает список слов, отсортированных по алфавиту. Как я могу получить результаты, отсортированные по использованию?UITextChecker completionsForPartialWordRange
ответ
Документы для completionsForPartialWordRange:inString:language:
сказать:
Строки в массиве в порядке их должны быть представлены пользователю, то есть, более вероятные доработки прийти первую в массиве.
Однако результаты очень четко отсортированы в алфавитном порядке, и это неправда, что «более вероятные завершения на первом месте в массиве». Ниже тестировался с прошивкой 9:
NSString *partialWord = @"th";
UITextChecker *textChecker = [[UITextChecker alloc] init];
NSArray *completions = [textChecker completionsForPartialWordRange:NSMakeRange(0, partialWord.length) inString:partialWord language:@"en"];
IOS слово доработок для "th"
:
thalami,
thalamic,
thalamus,
thalassic,
thalidomide,
thallium,
...
the,
...
Таким образом, результаты должны быть отсортированы снова после получения слова доработок.
ОС X NSSpellChecker
версия этого метода не имеют те же проблемы:
NSString *partialWord = @"th";
NSArray *completions = [[NSSpellChecker sharedSpellChecker] completionsForPartialWordRange:NSMakeRange(0, partialWord.length) inString:partialWord language:@"en" inSpellDocumentWithTag:0];
Список полных слов из словаря проверки орфографии в порядке, они должны быть представлены пользователю.
Mac OS X слово доработок для "th"
:
the,
this,
that,
they,
thanks,
there,
that's,
...
Подача отчета об ошибке радар будет хорошей идеей, так что поведение, мы надеемся, будет исправлена в более поздней версии IOS. Я сообщил об этом как rdar: // 24226582, если вы хотите дублировать.
Я попытался сделать расширенный поиск rdar 24226582 на репортере Apple Bug, но он говорит, что результаты не найдены :(Я делаю что-то не так? –
@PranoyC Apple rdars являются частными и неисследованными, поэтому вы не сможете найти это, но вы должны сделать свой собственный и сказать «duplicate of rdar: // 24226582» где-нибудь в описании. Затем скопируйте/вставьте его в [OpenRadar] (https://openradar.appspot.com/) (как и следовало бы сделанный). – pkamb