5

我已将 NSComboBox 绑定到界面构建器中的数据源。当我在 NSComboBox 中键入内容时,我正确地获得了自动完成建议。

但是自动完成是区分大小写的,这意味着如果角色使用错误的大小写,我不会得到建议。

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

谢谢

4

2 回答 2

4

您应该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 @"";
}
于 2013-01-23T16:11:27.577 回答
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;
}
于 2013-01-25T06:52:18.490 回答