我已经将NSComboBox绑定到界面构建器中的数据源。 当我在NSComboBox中键入内容时,我正确地获得了自动填充建议。如何为NSComboBox启用不区分大小写的自动完成功能?
但是,自动完成区分大小写,这意味着如果字符使用了错误的大小写,我不会收到建议。
如何为NSComboBox启用不区分大小写的自动完成功能,该功能与界面生成器中的数据源绑定?
感谢
我已经将NSComboBox绑定到界面构建器中的数据源。 当我在NSComboBox中键入内容时,我正确地获得了自动填充建议。如何为NSComboBox启用不区分大小写的自动完成功能?
但是,自动完成区分大小写,这意味着如果字符使用了错误的大小写,我不会收到建议。
如何为NSComboBox启用不区分大小写的自动完成功能,该功能与界面生成器中的数据源绑定?
感谢
你应该在你NSComboBox数据源实现comboBox:completedString:
,e.g:
- (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;
}
但这意味着我无法在界面构建器中指定数据源。正确吗?我有很多很多字段,都是在界面构建器中配置的,将它们以编程方式绑定到数据源将会有很多工作。 – aneuryzm
@patrik你需要支持绑定吗? (数据源的类型是什么) –
如果您使用Cocoa绑定提供ComboBox,则不必实现“required”dataSource方法。只要NSComboBox有一个绑定的控制器,你也可以*组合框连接到一个数据源,并且该数据源只需要实现comboBox:completedString方法。 – iluvcapra