0

嗨,我有 3 个,当用户输入 3 个字符时UITextFields,我想自动更改为下一个。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;
4

1 回答 1

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;
}
于 2013-06-30T22:34:59.220 回答