我已将 NSComboBox 绑定到界面构建器中的数据源。当我在 NSComboBox 中键入内容时,我正确地获得了自动完成建议。
但是自动完成是区分大小写的,这意味着如果角色使用错误的大小写,我不会得到建议。
如何为绑定到界面生成器中的数据源的 NSComboBox 启用不区分大小写的自动完成功能?
谢谢
我已将 NSComboBox 绑定到界面构建器中的数据源。当我在 NSComboBox 中键入内容时,我正确地获得了自动完成建议。
但是自动完成是区分大小写的,这意味着如果角色使用错误的大小写,我不会得到建议。
如何为绑定到界面生成器中的数据源的 NSComboBox 启用不区分大小写的自动完成功能?
谢谢
您应该comboBox:completedString:
在您的 NSComboBox 数据源中实现,例如:
- (NSString *)comboBox:(NSComboBox *)comboBox completedString:(NSString *)partialString
{
for (NSString dataString in dataSourceArray) {
if ([[dataString commonPrefixWithString:partialString options:NSCaseInsensitiveSearch] length] == [commonPrefixWithString:partialString length]) {
return testItem;
}
}
return @"";
}
你可以继承一个 NSComboBoxCell 并覆盖 [NSComboBoxCell completedString:]。
- (NSString *)completedString:(NSString *)string
{
NSString *result = nil;
if (string == nil)
return result;
for (NSString *item in self.objectValues) {
NSString *truncatedString = [item substringToIndex:MIN(item.length, string.length)];
if ([truncatedString caseInsensitiveCompare:string] == NSOrderedSame) {
result = item;
break;
}
}
return result;
}