我已使用其委托方法实现了NSTokenField的自动完成功能:
- (NSArray *)tokenField:(NSTokenField *)tokenField
completionsForSubstring:(NSString *)substring
indexOfToken:(NSInteger)tokenIndex
indexOfSelectedItem:(NSInteger *)selectedIndex
{
return @[@"Token 1", @"Token 2", @"Token 3"];
}
...它可以很好地处理硬编码数组或可以在我的应用程序中本地创建的任何数组。当用户在令牌字段中键入时,我需要从服务器下载令牌。我正在使用AFNetworking 2来异步获取给定子串的令牌。不幸的是我找不到用异步流实现自动完成的方法。我注意到,如果返回完成数组需要太长时间,委托方法将冻结UI,因此从这一点向服务器的同步请求不是解决方案。文档也没有给我一个提示如何异步实现自动完成。也许只需使用NSTextField
委托方法就需要一些更复杂的解决方案。任何帮助将不胜感激。