gpt4 book ai didi

cocoa - 如何限制 NSTokenField 中的 token 数量?

转载 作者:行者123 更新时间:2023-12-03 16:20:20 24 4
gpt4 key购买 nike

我有一个 NSTokenField,在其中按 Enter 键时创建 token 。我想限制该字段中的 token 数量。举例来说,应该只允许用户依次输入 2 个 token 。之后,既不应该允许用户设置Token,也不应该允许用户进一步搜索。简而言之,用户应该在 2 个 token 后被阻止。

有人可以帮助我实现这一目标吗???

提前致谢:)

最佳答案

解决方案分为两部分:

-(NSArray *)tokenField:(NSTokenField *)tokenField shouldAddObjects:(NSArray *)tokens atIndex:(NSUInteger)index
{
//limit the tokens
if(self.tokensLimit)
{
NSArray * tokensArray = [_tokenField objectValue];

if([tokensArray count] > 0)
{
if([tokens isEqualToArray:tokensArray])
{
return tokens;
}
else if([tokensArray count]>=self.tokensLimit)
{
return @[];
}
else if([tokens count]>0)
{
tokens = [tokens subarrayWithRange:NSMakeRange(0, MIN([tokens
count], self.tokensLimit))];
}
else
return @[];
}
else
{
tokens = [tokens subarrayWithRange:NSMakeRange(0, MIN([tokens count], self.tokensLimit))];
}
}

return tokens;
}

其中 tokensLimit 是一个 int > 0委托(delegate)涵盖了所有情况,例如通过复制/粘贴添加 token 、完成列表、拖放、手动写入等。

另一个委托(delegate)涵盖了用户编写字符串并点击“TAB”的情况

- (BOOL)control:(NSControl *)control isValidObject:(id)object
{
if(self.tokensLimit)
{
NSArray * tokensArray = [_tokenField objectValue];
tokensArray = [tokensArray subarrayWithRange:NSMakeRange(0, MIN([tokensArray count], self.tokensLimit))];
[_tokenField setObjectValue:tokensArray];
}
return YES;
}

关于cocoa - 如何限制 NSTokenField 中的 token 数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649986/

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