10 個のテキストフィールドがあり、それぞれに最大で 1 文字を保持できます。最初のテキスト フィールドに文字を入力すると、フォーカスは自動的に次のテキスト フィールドに移動する必要があります。つまり、テキストフィールドに最初の文字が入力されるとすぐに、フォーカスが次の文字に移ります。つまり、次のテキストフィールドがファーストレスポンダーになるはずです。私は以下のコードを書き、テキストフィールドデリゲートメソッドを使用しました。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if([myCharSet characterIsMember:c])
{
int previousTag = textField.tag;
if([textField.text length] > 0)
{
if((previousTag == 9) && ([textField10.text length] >0))
{
return NO;
}
UITextField *tempField=(UITextField *)[self.view viewWithTag:previousTag+1];
if([tempField.text length] > 0){
[tempField resignFirstResponder];
return NO;
}
[tempField becomeFirstResponder];
return YES;
}
}
else{
return NO;
}
}
return YES;
}
しかし、私は望ましい結果を得ていません。文字を入力すると、最初のテキスト フィールドに入力されますが、フォーカスが次のテキスト フィールドに移動しません。2 番目の文字を入力すると、次のテキスト フィールドに入力されます。
同様に、テキスト フィールドを削除すると、フォーカスが自動的に前のテキスト フィールドに移動するように、削除関数を記述する必要があります。
どんな答えでも大歓迎です。ありがとう。