UILexicon en Objective-C

¿Cómo usas UILexicon en Objective-C? Me parece que la documentation que proporciona Apple es extremadamente poco útil.

¿Qué hace? ¿Devuelve un dictionary o la ortografía adecuada de las palabras? ¿O proporciono una palabra como "hellllo" y la compara con la ortografía correcta "Hello" y la devuelve como una cadena?

Cualquier ayuda sería apreciada.

requestSupplementaryLexiconWithCompletion:


Aquí está mi informe de errores, pero obviamente tendré errores porque estoy totalmente adivinando cómo usar la function, sin idea de lo que está dentro de la instrucción de bloque (porque los documentos (en el momento) no dicen! (Beta 4 docs )) ¡Jajaja! introduzca la descripción de la imagen aquí

    Nunca he usado esta function, pero una búsqueda rápida en la web de "UILexicon" me aterrizó en la documentation de Apple; leyendo y siguiendo los enlaces de allí llenados en la image bastante rápido.

    La Guía de progtwigción de la extensión de la aplicación tiene una explicación rápida de lo que son los lexicones:

    Cada keyboard personalizado (independiente del valor de su key RequestsOpenAccess ) tiene acceso a un léxico básico de autocorrección a través de la class UILexicon . Utiliza esta class, junto con un léxico de tu propio layout, para proporcionar sugerencias y autocorrecciones a medida que los usuarios ingresan text.

    Al hacer clic en el enlace UILexicon en esa página, UILexicon al documento de reference para esa class, que explica que se trata de una list de solo lectura de pares de términos proporcionados por Apple. Cada una de sus inputs es un object UILexiconEntry : los documentos de esa class dicen que proporciona una userInput usuario (lo que el usuario escribió, por ejemplo, "ipad") y un documentText (para sustituirlo, por ejemplo, "iPad"). Dado que esas classs son de solo lectura, se deduce que probablemente no sean una forma para que usted proporcione sus propios pares de autocorrección, como se indica en los documentos, son para complementar el sistema de autocorrección que implementa.


    En este punto, ni siquiera tengo que mirar el doc para requestSupplementaryLexiconWithCompletion: para get una buena idea cómo usarlo: solo la statement me dice:

    • Es un método en UIInputViewController , la class que tendría que subclass para crear un keyboard personalizado. En algún lugar de esa subclass probablemente debería llamarlo yo self .
    • Su tipo de retorno es void , así que no puedo get un léxico al asignar el resultado de una llamada requestSupplementaryLexiconWithCompletion a una variable.
    • Llama al bloque que proporciono, UILexicon un object UILexicon como parámetro a ese bloque.
    • Tiene palabras como "request" y "completionHander" en él, por lo que probablemente haga algo asíncrono que demore un time y llame a ese bloque cuando haya terminado.

    Por lo tanto, supongo que si estuviera escribiendo un keyboard personalizado, llamaría a este método desde el principio (en viewDidLoad , tal vez) y UILexicon el UILexicon que proporciona para poder consultarlo más tarde cuando el usuario esté escribiendo. Algo como esto:

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

    Debido a que no está claro cuánto tardará completarse la self.lexicon con self.lexicon , en cualquier lugar donde esté usando self.lexicon , debería comprobar si es nil .


    De vuelta en la Guía de progtwigción de la extensión de la aplicación , muestra "Autocorrección y sugerencia" en "Características del keyboard que los usuarios de iOS esperan", justo antes de decir:

    Puede decidir si implementa o no tales características; no hay una API dedicada para ninguna de las características que se mencionan

    Por lo tanto, parece que la autocorrección es algo que debe hacer usted mismo, con su propia interfaz de usuario que es parte de la vista presentada por su subclass UIInputViewController . La sección API Quick Start for Custom Keyboards en la guía de progtwigción parece sugerir cómo hacerlo: use documentContextBeforeInput para ver lo que el usuario ha escrito recientemente, deleteBackward para deshacerse de él e insertText: para insert una corrección.