代表在目标c中限制字符

时间:2017-07-06 09:33:52

标签: objective-c delegates

我有一个表格,其中有一个代表字段限制在一个字段中输入4位数。现在我有另一个字段我想在同一形式的不同字段上使用另一个限制,这可以限制字段只输入七个值。我如何使用相同形式的两个委托,如果我使用它们,它们会显示两次使用的错误。这是我用于第一个字段的委托。

Bitmap bitmap =  BitmapFactory.decodeFile(imagesPathArrayList.get(position));
ImageView.setImageBitmap(bitmap);

{

}

enter image description here

2 个答案:

答案 0 :(得分:1)

而不是使用Delegates,而是考虑一个代理做任何事情......

您可以在委托中使用if,区分文本字段:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == textField1)
    {
        if(range.length + range.location > 4)
        {
            return NO;
        }

        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return newLength <= 4;     
    }

    if (textField == textField2)
    {
        if(range.length + range.location > 7)
        {
            return NO;
        }

        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return newLength <= 7;          
    }
    return YES;
}

希望这会有所帮助......

答案 1 :(得分:1)

要识别同一控制器中的不同文本字段,您可以为其指定标记。现在让我们举一个例子,你有两个文本域,你分别给它们标记为100和200。现在,您需要将用户可以输入的字符限制为4,标记为100的第一个文本字段和标记为200的第二个文本字段中的10个。因此,您的代码将如下所示:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    //To make sure no crashes occurs
    if(range.length + range.location > textField.text.length)
    {
        return NO;
    }

    NSUInteger textLength = [textField.text length] + [string length] - range.length;

    if (textField.tag == 100) {

        return textLength <= 4;

    }else if(textField.tag == 200){

        return textLength <= 10;

    }else{

        //Other textfields except the one with tag 100 and 200 would have no limits
        return YES;
    }

}

我已经使用IF条件演示了这个示例,您可以使用Switch case或者您想要应用的任何内容。

希望这会对你有所帮助:)。