簡體   English   中英

目標-C中的UILexicon

[英]UILexicon in Objective-C

你如何在Objective-C中使用UILexicon? 我發現Apple提供的文檔非常無用。

它有什么作用? 它會返回字典或正確的單詞拼寫嗎? 或者我提供像“hellllo”這樣的單詞,並將其與正確的拼寫“Hello”匹配並將其作為字符串返回?

任何幫助,將不勝感激。

requestSupplementaryLexiconWithCompletion:


這是我的錯誤報告,但顯然我會有錯誤,因為我完全猜測如何使用該函數,不知道塊語句內部的內容(因為文檔(當時)沒有說!(Beta 4 docs) ))哈哈哈! 在此輸入圖像描述

我從來沒有使用過這個功能,但是對“UILexicon”的快速網絡搜索使我獲得了Apple的文檔; 閱讀和跟隨鏈接從那里填寫圖片非常快。

App Extension編程指南快速解釋了詞典的用途:

每個自定義鍵盤(獨立於其RequestsOpenAccess鍵的值)都可以通過UILexicon類訪問基本的自動UILexicon詞典。 利用此類以及您自己設計的詞典,在用戶輸入文本時提供建議和自動更正。

單擊UILexicon鏈接將我帶到該類的參考文檔,這解釋了它是Apple提供的術語對的只讀列表。 它的每個條目都是一個UILexiconEntry對象 - 該類的文檔說它提供了userInput (用戶輸入的內容,例如“ipad”)和documentText (替代它的內容,例如“iPad”)。 由於這些類是只讀的,因此它們可能不是您提供自己的自動更正對的方式 - 正如文檔中所述,它們用於補充您實現的任何自動更正系統。


在這一點上,我甚至不必查看requestSupplementaryLexiconWithCompletion:的文檔requestSupplementaryLexiconWithCompletion:了解如何使用它:只是聲明告訴我:

  • 它是UIInputViewController上的一個方法,我必須創建一個自定義鍵盤。 在那個子類的某個地方,我應該把它稱為self
  • 它的返回類型是void ,所以我不能通過將requestSupplementaryLexiconWithCompletion調用的結果賦給變量來獲得一個詞典。
  • 它調用我提供的塊,將UILexicon對象作為參數傳遞給該塊。
  • 它有“request”和“completionHander”這樣的詞,所以它可能會做一些需要一段時間的異步,並在完成時調用該塊。

所以,我猜測如果我正在編寫自定義鍵盤,我會在早期調用此方法(也許在viewDidLoad )並UILexicon它提供的UILexicon ,以便稍后在用戶輸入時可以引用它。 像這樣的東西:

@property UILexicon *lexicon;

- (void)viewDidLoad {
    [super viewDidLoad];
    [self requestSupplementaryLexiconWithCompletion:^(UILexicon *lexicon){
        self.lexicon = lexicon;
    }];
}

因為目前還不清楚requestSupplementaryLexiconWithCompletion需要多長時間才能完成,所以在我使用self.lexicon任何地方我應該檢查它是否nil


回到App Extension編程指南 ,它列出了“iOS用戶期望的鍵盤功能”下的“自動更正和建議”,然后說:

您可以決定是否實施此類功能; 沒有專門的API用於剛剛列出的任何功能

所以聽起來像autocorrection是你必須自己做的事情,你自己的UI是你的UIInputViewController子類提供的視圖的一部分。 編程指南中的API自定義鍵盤快速入門部分似乎暗示了你是如何做到的:使用documentContextBeforeInput來查看用戶最近輸入的內容, deleteBackward去除它,以及insertText:插入更正。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM