我爲我的應用程序註冊了一個頁面。系統會提示用戶輸入一個手機號碼和一個四位數的PIN碼,以便在應用程序中使用。有三個單元格字段可幫助標準化單元格格式 - 第一個字段是三位數字幷包含區號,第二個字段也是三位數字,最後一個字段是四個。接下來是PIN字段。當用戶在給定的框中輸入正確的數字位數時,我希望下一個字段變爲活動狀態。例如,當某人輸入區號的三位數字時,光標應前進到下一個框。如何在用戶輸入一定數量的字符時自動將光標移動到下一個字段
我已經得到它的工作,以便如果繼續鍵入光標將移動。但是,只有在輸入後纔會移動(例如,鍵入區號的三位數字,然後鍵入另一位數字,並且該數字將與光標一起出現在下一個框中;光標不移動只輸入三位數字後)。此外,我使用的方法似乎有一個小故障,如果它們已經有了所需數量的字符,就不可能編輯這些字段。
這是我目前使用的代碼:我很欣賞
-(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的代碼,我知道它比我正在做的更正確。但是,我的光標問題仍然存在。
如果你希望它第三個字符後移動,你需要使用if(newLength == 3),而不是4 – lnafziger
如果我做第三個字符放入下一個文本字段。 – Dante
有趣。我想這是因爲你告訴新的textField成爲第一個響應者,並且它在這個函數返回之前執行它。然後我會發佈一個不同的方式。 – lnafziger