2016-01-08 49 views
1

我正在構建自定義鍵盤擴展並希望實現自動完成,就像Apple一樣。 正如我所看到的方法completionsForPartialWordRange返回按字母順序排列的單詞列表。我如何獲得按使用情況排序的結果?UITextChecker completionsForPartialWordRange

enter image description here

回答

2

completionsForPartialWordRange:inString:language:文檔說:

數組中的字符串是他們應該被呈現給用戶,這是秩序,更可能的落成是第一位在數組中。

但是,結果按照字母順序非常明顯地排序,並且「更可能的完成優先於數組」是不正確的。以下是與iOS 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, 
... 

那麼,結果將需要獲得字補後再次排序。

的OS X版本NSSpellChecker這種方法不具有同樣的問題:

NSString *partialWord = @"th"; 

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

的從他們應該被呈現給用戶的順序進行拼寫檢查詞典完整的單詞列表。

"th" Mac OS X的字補:

the, 
this, 
that, 
they, 
thanks, 
there, 
that's, 
... 

歸檔雷達錯誤報告將是一個不錯的主意,這樣的行爲有望被固定的iOS版本。如果您想複製,我已經將其報告爲rdar:// 24226582。

+0

我試圖做高級搜索的蘋果bug記者rdar 24226582,但它說沒有結果發現:(我做錯了什麼? –

+0

@PranoyC蘋果rdars是私人的和不可搜索的,所以你將無法找到但是你應該自己製作並在說明的某個地方說出「rdar:// 24226582的重複」,然後將它複製/粘貼到[OpenRadar](https://openradar.appspot.com/)(因爲我應該有完成)。 – pkamb