NSTextField autocomplete

Posted by Rasmus Styrk on Stack Overflow See other posts from Stack Overflow or by Rasmus Styrk
Published on 2012-11-29T19:20:48Z Indexed on 2012/12/06 17:05 UTC
Read the original article Hit count: 828

Does anyone know of any class or lib that can implement autocompletion to an NSTextField?

I'am trying to get the standard autocmpletion to work but it is made as a synchronous api. I get my autocompletion words via an api call over the internet.

What have i done so far is:

- (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];
        }
    }
}

When my store is done, i have a delegate that gets called:

- (void) completionStore:(WordcompletionStore *)store didFinishWithWords:(NSArray *)arrayOfWords
{
    [self.spinner stopAnimation:nil];
    self.completions = arrayOfWords;
    self.doingAutocomplete = NO;
}

The code that returns the completion list to the nstextfield is:

- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index
{
    *index = -1;
    return self.completions;
}

My problem is that this will always be 1 request behind and the completion list only shows on every 2nd char the user inputs.

I have tried searching google and SO like a mad man but i cant seem to find any solutions..

Any help is much appreciated.

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about cocoa