嗨我有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;
答案 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;
}