質問

I have 4 text fields horizontally. Each textFiled will allow only four characters. If user enters four characters focus should be changed to next text field with out any user interaction. By using below code,i am able to switch to next textFiled, but only after typing any character from the keyboard. My requirement is to get auto focus on next filed after entering four characters. Please help me in this. Thanks in Advance.

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

if ( range.location  >= 4 ) {
  textField.text = string;        
    UIResponder* nextResponder = [textField.superview viewWithTag:(textField.tag + 1)];
    if (nextResponder) {           
        [textField resignFirstResponder];            
        [nextResponder becomeFirstResponder];          
    }        
    return NO;
}    
return YES;

}

役に立ちましたか?

解決

//try to this code 


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  if ([[textField text] length] + [string length] - range.length > 4) {

    textField.text = string;        
   UIResponder* nextResponder = [textField.superview viewWithTag:(textField.tag + 1)];
   if (nextResponder) {           
      [textField resignFirstResponder];            
      [nextResponder becomeFirstResponder];          
  }   

    return YES; 
}

hope this will help you

他のヒント

You can use something like this in this method:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {

    if(theTextField == firstField)
    {
        [secondField becomeFirstResponder];
        return YES;
    }

    if(theTextField == secondField)
    {
        [thirdField becomeFirstResponder];
        [theTextField resignFirstResponder];
        return YES;
    }

    if(theTextField == thirdField)
    {
        [thirdField becomeFirstResponder];
        [theTextField resignFirstResponder];
        return YES;
    }
    [theTextField resignFirstResponder];
    return YES;
}

I think you need something like this, https://github.com/lashad/PTPasscodeViewController

try replacing this

if ( range.location  >= 4 )

with

if ( range.location  >= 3 )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top