我已經將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