gpt4 book ai didi

objective-c - NSTokenField 不允许我输入除 tokenField :completionsForSubstring:. 之外的其他字符串 .. 返回

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:20 26 4
gpt4 key购买 nike

我的问题是 NSTokenField 不允许我键入任何我想要的文本,它只允许我键入包含在 tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: 返回的 NSArray 中的字符串。

- (NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(NSInteger)tokenIndex indexOfSelectedItem:(NSInteger *)selectedIndex      {
return [NSArray arrayWithObjects:@"AA", @"BB", @"CC", @"DD", nil];
}

我的 NSTokenField 只能包含上述文本标记。如果我输入例如 XXX,它不会出现并且无法添加。

为什么会发生这种情况,因为文档提到“用户可以输入一个字符串,该字符串不在可能完成的列表中并且也被标记化了。”

我错过了什么?

最佳答案

selectedItemIndex 的默认值为 0 — 返回列表中的第一项。

因此,如果子字符串未出现在您的列表中,则您需要将其设置为 -1(否则它将用您第一次完成的文本替换用户键入的文本)

只返回完成列表中实际计算用户键入的前缀的内容。 (这通常是正确的用户体验。)

- (NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(NSInteger)tokenIndex indexOfSelectedItem:(NSInteger *)selectedIndex
{
NSArray *completions = [NSArray arrayWithObjects:@"AA", @"BB", @"CC", @"DD", nil];
NSMutableArray *filteredCompletions = [NSMutableArray array];

[completions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([[obj lowercaseString] hasPrefix:[substring lowercaseString]])
[filteredCompletions addObject:obj];
}];

return filteredCompletions;
}

关于objective-c - NSTokenField 不允许我输入除 tokenField :completionsForSubstring:. 之外的其他字符串 .. 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com