Qualcuno sa di una classe o di una libreria che può implementare il completamento automatico in un NSTextField?Completamento automatico NSTextField
Sto cercando di ottenere il funzionamento standard dell'autocampione ma è stato creato come api sincrone. Ottengo le mie parole di autocompletamento tramite una chiamata API su Internet.
Che cosa ho fatto finora è:
- (void)controlTextDidChange:(NSNotification *)obj
{
if([obj object] == self.searchField)
{
[self.spinner startAnimation:nil];
[self.wordcompletionStore completeString:self.searchField.stringValue];
if(self.doingAutocomplete)
return;
else
{
self.doingAutocomplete = YES;
[[[obj userInfo] objectForKey:@"NSFieldEditor"] complete:nil];
}
}
}
Quando il mio negozio è fatto, ho un delegato che viene chiamato:
- (void) completionStore:(WordcompletionStore *)store didFinishWithWords:(NSArray *)arrayOfWords
{
[self.spinner stopAnimation:nil];
self.completions = arrayOfWords;
self.doingAutocomplete = NO;
}
Il codice che restituisce l'elenco di completamento al nstextfield è:
- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index
{
*index = -1;
return self.completions;
}
Il mio problema è che questa sarà sempre una richiesta dietro e l'elenco di completamento o mostra nettamente ogni 2 carati che l'utente immette.
Ho provato a cercare Google e così come un pazzo, ma i cant sembrano trovare alcuna soluzione ..
Ogni aiuto è molto apprezzato.
Testerò la tua soluzione quando tornerò al mio codice. –
Ha funzionato perfettamente. Ho appena cambiato l'if-statematement per verificare self.autoCompleteRequestor invece di self.doingAutocomplete. Questa var booleana non è più necessaria. Grazie ancora! –