我试图弄清楚如何在我的搜索字段下方显示搜索结果。我想原因是我的程序从没收到消息

-(NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(int*)index;


所以我永远不会返回任何结果。

但是,我确实收到了

- (void)controlTextDidChange:(NSNotification *)obj;
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector;


原因可能是什么?我确实设置了代表。

最佳答案

您的代表将不会收到completions:消息,除非在文本字段的字段编辑器上的某个时刻调用了complete。在controlTextDidChange:中,您可以执行以下操作:

- (void)controlTextDidChange:(NSNotification *)note {

    NSTextView * fieldEditor = [[note userInfo] objectForKey:@"NSFieldEditor];

    [fieldEditor complete];
}


毫无疑问,您将不得不使其变得更加复杂(当您的委托人返回完成列表时,将再次调用controlTextDidChange:,从而创建无限循环),但这应该可以使您入门。

关于objective-c - NSSearchField-显示带有结果的NSMenu,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5929517/

10-10 20:28