如何为NSComboBox启用不区分大小写的自动完成?

时间:2013-01-21 14:53:09

标签: objective-c cocoa

我已将NSComboBox绑定到接口构建器中的数据源。 当我在NSComboBox中输入内容时,我正确地获得了自动填充建议。

然而,自动填充是区分大小写的,这意味着如果角色使用了错误的情况我就不会得到建议。

如何为NSComboBox启用不区分大小写的自动完成,NSComboBox绑定到界面构建器中的数据源?

由于

2 个答案:

答案 0 :(得分:4)

您应该在NSComboBox数据源中实现comboBox: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 @"";
}

答案 1 :(得分:4)

你可以继承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;
}