アプリのサインアップページがあります。ユーザーは、アプリで使用するセル番号と4桁のPINを入力するように求められます。セル形式の標準化に役立つ3つのセルフィールドがあります。最初のフィールドは3桁で市外局番を保持し、2番目のフィールドも3桁で、最後のフィールドは4桁です。次にPINフィールドが表示されます。ユーザーが特定のボックスに正しい桁数を入力したときに、次のフィールドをアクティブにしたい。たとえば、誰かが市外局番の3桁を入力すると、カーソルは次のボックスに進むはずです。
入力を続けるとカーソルが移動するように動作するようになりました。ただし、次の数字を入力した後にのみ移動します(たとえば、市外局番の3桁を入力してから別の数字を入力すると、その数字がカーソルと一緒に次のボックスに表示されます。入力後、カーソルは移動しません。わずか3桁)。さらに、私が使用している方法には、必要な文字数がすでにある場合にフィールドを編集できないという不具合があるようです。
これは私が現在使用しているコードです:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSUInteger newLength = newString.length;
if (textField.tag == 3) {
if (newLength == 4) {
[cellField2 becomeFirstResponder];
}
}
if (textField.tag == 4) {
if (newLength == 4) {
[cellField3 becomeFirstResponder];
}
}
if (textField.tag == 5) {
if (newLength == 5) {
[pinField becomeFirstResponder];
}
}
if (textField.tag == 6) {
if (newLength == 5) {
[pinField resignFirstResponder];
}
}
return YES;
}
助けてくれてありがとう。
ETA:danhのコードを含むように編集されました。これは、私が行っていたものよりも正しいことがわかっています。ただし、カーソルの問題は残ります。