达到确定长度时自动更改UITextField

时间:2013-06-30 22:16:12

标签: objective-c uitextfield

嗨我有3 UITextFields,当用户输入3个字符时,我想自动更改为下一个textfield。我设法限制其中一个具有正常键盘输入的textfields的长度,对于另外两个具有数字小键盘我可以限制长度的长度。

以下是textfield之一限制长度的内容:

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

{

if (dia.text.length >= 2 && range.length == 0)
{
    [self.mes becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if(mes.text.length >= 3 && range.length == 0) {
    [self.anio becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if (anio.text.length >= 4 && range.length == 0)
{
    [self.hora becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if (hora.text.length >= 2 && range.length == 0)
{
    [self.minutos becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}
return YES;

}

编辑:在viewDidLoad上我有这5行,如果我删除它们,限制对任何人都不起作用,但如果我留下它们我只能在一个文本字段上输入文字:

self.dia.delegate = self;
self.mes.delegate = self;
self.anio.delegate = self;
self.hora.delegate = self;
self.minutos.delegate = self;

1 个答案:

答案 0 :(得分:1)

您应该更改firstResponder。

if(mes.text.length >= 3 && range.length == 0) {
   [textField resignFirstResponder]; // this will dismiss the keyboard from the current textfield
   [self.theOtherTextfield becomeFirstResponder]; // this will activate the desired textfield
}  

<强>更新

在viewDidLoad中添加以下内容:

self.dia.tag = 1;
self.mes.tag = 2;
self.anio.tag = 3;
self.hora.tag = 4;
self.minutos.tag = 5;  

然后新的shouldChangeCharactersInRange是:

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

if (dia.text.length >= 2 && range.length == 0 && textField.tag == 1)
{
    [self.mes becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if(mes.text.length >= 3 && range.length == 0 && textField.tag == 2) {
    [self.anio becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if (anio.text.length >= 4 && range.length == 0 && textField.tag == 3)
{
    [self.hora becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}

if (hora.text.length >= 2 && range.length == 0 && textField.tag == 4)
{
    [self.minutos becomeFirstResponder]; // esto activa el siguiente textfield
    return NO;
}
return YES;
}