我试图弄清楚如何在我的搜索字段下方显示搜索结果。我想原因是我的程序从没收到消息
-(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/