¿Cómo utilizar la vista de sugerencias automáticas para la extensión de keyboard de escritorio personalizado ios8?

¿Cómo puedo implementar el panel de input pnetworkingictivo de Apple en mi propia extensión de keyboard personalizada iOS8?

El keyboard personalizado de Doc Custom Keyboards de Apple dice:

RequestOpenAccess set BOOL yes en info.plist tiene acceso a un léxico básico de autocorrection través de la class UILexicon. Utiliza esta class, junto con un léxico de tu propio layout, para proporcionar suggestions y autocorrections medida que los usuarios ingresan text.

Pero no puedo encontrar cómo usar el UILexicon en mi keyboard personalizado. Puse la configuration RequestsOpenAccess en YES :

introduzca la descripción de la imagen aquí

Pero aún no puede get acceso a un dictionary personalizado para sugerencias de palabras como el keyboard pnetworkingeterminado iOS8 de Apple:

introduzca la descripción de la imagen aquí

Mi keyboard personalizado se ve así:

introduzca la descripción de la imagen aquí

EDITAR:

Encontré requestSupplementaryLexiconWithCompletion que utilizó para la UILexicon class así que bash implementar esto usando el siguiente código:

  - (void)viewDidLoad { [super viewDidLoad]; [self requestSupplementaryLexiconWithCompletion:^(UILexicon *appleLex) { appleLexicon = appleLex; NSUInteger lexEntryCount = appleLexicon.entries.count; for(UILexiconEntry *entry in appleLexicon.entries) { NSString *userInput = [entry userInput]; NSString *documentText = [entry documentText]; lable.text=userInput; [lable setNeedsDisplay]; } }]; } 

¡Finlay lo hice …! Pongo sugerencias usando la database estática de sqlite y obtengo los primeros tres trabajos sugeridos usando la consulta similar como el siguiente código:

 NSString *precedingContext = self.textDocumentProxy.documentContextBeforeInput; //here i get enter word string. __block NSString *lastWord = nil; [precedingContext enumerateSubstringsInRange:NSMakeRange(0, [precedingContext length]) options:NSStringEnumerationByWords | NSStringEnumerationReverse usingBlock:^(NSString *substring, NSRange subrange, NSRange enclosingRange, BOOL *stop) { lastWord = substring; *stop = YES; }]; NSLog(@"==%@",lastWord); // here i get last word from full of enterd string NSString *str_query = [NSString stringWithFormat:@"select * from suggestion where value LIKE '%@%%' limit 3",lastWord]; NSMutableArray *suggestion = [[DataManager initDB] RETRIVE_Playlist:str_query]; NSLog(@"arry %@",suggestion); i get value in to array using like query if(suggestion.count>0) { if(suggestion.count==1) { [self.ObjKeyLayout.FirstButton setTitle:[suggestion objectAtIndex:0] forState:UIControlStateNormal]; } else if(suggestion.count==2) { [self.ObjKeyLayout.FirstButton setTitle:[suggestion objectAtIndex:0] forState:UIControlStateNormal]; [self.ObjKeyLayout.secondButton setTitle:[suggestion objectAtIndex:1] forState:UIControlStateNormal]; } else { [self.ObjKeyLayout.FirstButton setTitle:[suggestion objectAtIndex:0] forState:UIControlStateNormal]; [self.ObjKeyLayout.secondButton setTitle:[suggestion objectAtIndex:1] forState:UIControlStateNormal]; [self.ObjKeyLayout.thirdButton setTitle:[suggestion objectAtIndex:2] forState:UIControlStateNormal]; } } else { [self.ObjKeyLayout.FirstButton setTitle:@"" forState:UIControlStateNormal]; [self.ObjKeyLayout.secondButton setTitle:@"" forState:UIControlStateNormal]; [self.ObjKeyLayout.thirdButton setTitle:@"" forState:UIControlStateNormal]; } 

y lo tengo, mi salida de keyboard es:

introduzca la descripción de la imagen aquí

Puede ser que esta respuesta ayuda a alguien.

 + (void)getSuggestionsFor:(NSString *)word WithCompletion:(void(^)(NSArray *))completion { NSString *prefix = [word substringToIndex:word.length - 1]; // Won't get suggestions for correct words, so we are scrambling the words NSString *scrambledWord = [NSString stringWithFormat:@"%@%@",word, [self getRandomCharAsNSString]]; UITextChecker *checker = [[UITextChecker alloc] init]; NSRange checkRange = NSMakeRange(0, scrambledWord.length); NSRange misspelledRange = [checker rangeOfMisspelledWordInString:scrambledWord range:checkRange startingAt:checkRange.location wrap:YES language:@"en_US"]; NSArray *arrGuessed = [checker guessesForWordRange:misspelledRange inString:scrambledWord language:@"en_US"]; // NSLog(@"Arr ===== %@",arrGuessed); // Filter the result based on the word NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"SELF BEGINSWITH[c] %@",word]; NSArray *arrayfiltenetworking = [arrGuessed filtenetworkingArrayUsingPnetworkingicate:pnetworkingicate]; if(arrayfiltenetworking.count == 0) { // Filter the result based on the prefix NSPnetworkingicate *newPnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"SELF BEGINSWITH[c] %@",prefix]; arrayfiltenetworking = [arrGuessed filtenetworkingArrayUsingPnetworkingicate:newPnetworkingicate]; } completion(arrayfiltenetworking); } + (NSString *)getRandomCharAsNSString { return [NSString stringWithFormat:@"%c", arc4random_uniform(26) + 'a']; }