2016-01-08 3 views
1

Я строю пользовательское расширение клавиатуры и хочу реализовать автозаполнение, как это делает Apple. Как я вижу, метод completionsForPartialWordRange возвращает список слов, отсортированных по алфавиту. Как я могу получить результаты, отсортированные по использованию?UITextChecker completionsForPartialWordRange

enter image description here

ответ

2

Документы для 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, если вы хотите дублировать.

+0

Я попытался сделать расширенный поиск rdar 24226582 на репортере Apple Bug, но он говорит, что результаты не найдены :(Я делаю что-то не так? –

+0

@PranoyC Apple rdars являются частными и неисследованными, поэтому вы не сможете найти это, но вы должны сделать свой собственный и сказать «duplicate of rdar: // 24226582» где-нибудь в описании. Затем скопируйте/вставьте его в [OpenRadar] (https://openradar.appspot.com/) (как и следовало бы сделанный). – pkamb

 Смежные вопросы

  • Нет связанных вопросов^_^