Objective c 如何为NSCOMBOX启用不区分大小写的自动完成?
我已将NSCOMBOX绑定到interface builder中的数据源。 当我在NSComboBox中键入内容时,我正确地得到了自动完成建议 然而,自动完成是区分大小写的,这意味着如果角色使用了错误的大小写,我不会得到建议 如何为绑定到interface builder中的数据源的NSComboBox启用不区分大小写的自动完成功能Objective c 如何为NSCOMBOX启用不区分大小写的自动完成?,objective-c,cocoa,Objective C,Cocoa,我已将NSCOMBOX绑定到interface builder中的数据源。 当我在NSComboBox中键入内容时,我正确地得到了自动完成建议 然而,自动完成是区分大小写的,这意味着如果角色使用了错误的大小写,我不会得到建议 如何为绑定到interface builder中的数据源的NSComboBox启用不区分大小写的自动完成功能 谢谢您应该在NSCOMBOX数据源中实现组合框:completedString:,例如: - (NSString *)comboBox:(NSComboBox *)
谢谢您应该在NSCOMBOX数据源中实现
组合框:completedString:
,例如:
- (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 @"";
}
您可以将nscomboxCell子类化并重写[nscomboxCell 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;
}
但这意味着我不能在interface builder中指定数据源。对的我有许多字段,在interface builder中配置,以编程方式将它们绑定到数据源将是一项艰巨的工作。@patrik您需要支持绑定吗?(数据源的类型是什么)如果向组合框提供Cocoa绑定,则不必实现“必需的”数据源方法。只要NSComboBox有一个绑定的控制器,您也可以将组合框连接到数据源,并且该数据源只需要有comboBox:completedString“方法已实现。@iluvcapra-您是如何实现的?什么是绑定控制器?你能用一个例子写一个答案吗?提到的这个“completedString”方法从未被调用。如果我使用的是数组控制器呢?正如我在另一个问题中所评论的,self.objectValues是数据源吗?我已经将所有字段绑定到interface builder中的数据源,我有80个字段。我应该以编程方式填充它们,以便自定义自动完成?