1

水平方向に4つのテキストフィールドがあります。各textFiledは4文字のみを許可します。ユーザーが4文字を入力した場合、ユーザーの操作なしでフォーカスを次のテキストフィールドに変更する必要があります。以下のコードを使用することで、次のtextFiledに切り替えることができますが、キーボードから任意の文字を入力した後でのみです。私の要件は、4文字を入力した後、次のファイルにオートフォーカスを取得することです。これで私を助けてください。前もって感謝します。

- (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;

}

4

4 に答える 4

1

このメソッドでは、次のようなものを使用できます。

- (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;
}
于 2012-06-15T06:17:06.110 に答える
0

これを交換してみてください

if ( range.location  >= 4 )

if ( range.location  >= 3 )
于 2012-06-15T06:35:03.703 に答える
0

https://github.com/lashad/PTPasscodeViewControllerのようなものが必要だと思います

于 2012-06-15T06:31:44.373 に答える
0
//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; 
}

これがあなたのお役に立てば幸いです

于 2012-06-15T06:38:58.337 に答える