2013-06-30 14 views
0

嗨我有3 UITextFields,我想在用戶輸入3個字符時自動更改爲下一個textfield。我設法限制一個textfields有一個正常的鍵盤輸入,其他2有一個數字鍵盤,我可以限制長度的長度。當達到確定長度時自動更改UITextField

以下是我對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

您應該更改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 
} 

UPDATE

在您的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; 
} 
+3

無需調用'resignFirstResponder'上當前文本字段。只需在下一個調用'becomeFirstResponder'即可。 – rmaddy

+0

是的,你是對的。 – pasine

+0

@notme非常適用於那些有默認鍵盤的人,但對於數字鍵盤的人來說,長度限制不起作用 – dastjuso

相關問題