如何限制NSTokenField中的令牌数量?
问题描述:
我有一个NSTokenField在按回车键创建令牌。我想限制此字段中的令牌数量。举个例子,用户应该被允许一个接一个地输入2个令牌。之后,不应允许用户设置令牌,也不允许用户进一步搜索。总之,用户应该在2个令牌后被阻塞。如何限制NSTokenField中的令牌数量?
任何人都可以帮助我实现这个吗?
感谢提前:)
答
如果您保存令牌分贝,你可以指望的特定用户ID的行数,并添加一个if语句将其限制在2
答
将该溶液在2份分为:
-(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 委托覆盖了所有的情况下,像通过复制/粘贴,完成列表,拖动&下降,手写等加入令牌..
这个其他代表涵盖用户写的字符串,然后点击“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;
}
感谢您的回答,但它不是对完成列表的情况。限于令牌字段中存在的令牌。我想限制NSTokenField实例的objectValue。 ObjectValue包含所选标记的数量。 –
@AbdulNaveed我认为blo是在这里的东西,为什么你不跟踪什么时候完成添加,然后开始没有返回任何可能的完成 –
可以同步发布一些代码?尽可能多的理解,你可以做一些事情,比如计数行数,并添加一个if语句,使其大于或等于2...if($ count> = 2){//做点什么}' –