限制用户只输入七个逗号分隔的单词

时间:2017-03-16 10:30:58

标签: ios objective-c uitextfield uitextfielddelegate

我有UITextfield我希望用户输入以逗号分隔的文字

示例:elephant,fox等,另外我想限制用户输入最多7个以逗号分隔的单词。

我已在UITextfield

的委托方法中编写此代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  NSArray *numberOfWords = [self.tagsTextField.text componentsSeparatedByString:@","];
    if([numberOfWords count] > 6)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

我无法达到预期的行为请帮助!

3 个答案:

答案 0 :(得分:0)

试试这个:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:  (NSRange)range replacementString:(NSString *)string
  {
 NSArray *numberOfWords = [self.tagsTextField.text componentsSeparatedByString:@","];
if([numberOfWords count] > 6 && [string isEqualToString:@","])
{
    return NO;
}
else
{
    return YES;
}
}

你可以阻止第二个空格等等。

答案 1 :(得分:0)

在您的代码中,它会限制用户输入第七个单词,并且在输入第6个单词后也不允许用户删除。

试试这段代码,

.pipe()

这将允许用户通过逗号分隔符输入最多7个单词,您也可以在输入7个单词后删除单词。

答案 2 :(得分:0)

请遵循以下代码:7逗号之后需要7个逗号它不会占用任何,但您可以在文本字段中写入或删除字符。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSArray *numberOfWords = [myTextField.text componentsSeparatedByString:@","];


    NSLog(@"%d",(int)numberOfWords.count);

    NSLog(@"%@",numberOfWords);

    if([numberOfWords count] > 7 && [string isEqualToString:@","])
    {
        return NO;
    }
    else
    {
        return YES;
    }

}

enter image description here

希望这能帮到你..

更新:

如果在文本字段中粘贴复制的文本,则此代码不起作用。要禁用textField的复制/粘贴,请使用以下代码:Already Mentioned here

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:))
        return NO;
    return [super canPerformAction:action withSender:sender];
}