我需要有3个文本字段,每个文本字段只能输入1个数字(文本字段的最大长度为1)。 我的问题是如何在用户输入数字后自动从textfield1,textfield2,textfield3导航?
答案 0 :(得分:2)
将textfield1,textfield2,textfield3的标记分别设置为0,1和2并尝试以下代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
// Try to find next responder
if (!(string.length == 0))
[self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
return YES;
} else {
if (textField.text.length == 1) {
[self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
}
return NO;
}
}
- (void)changeResponder:(UITextField *)textField {
NSInteger nextTag = textField.tag + 1;
UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder) {
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
} else {
// Not found, so remove keyboard.
[textField resignFirstResponder];
}
}
答案 1 :(得分:1)
实施textField:shouldChangeCharactersInRange:replacementString:
委托方法。根据输入文本字段的文本,您可以在下一个文本字段中调用becomeFirstResponder
。
请记住,您想要做的事情有很多并发症。如果用户将一堆文本粘贴到文本字段中会发生什么?如果用户返回已具有值的文本字段会发生什么?
答案 2 :(得分:0)
您可以使用以下代码:
- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {
if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){
[textField2 becomeFirstResponder];
}
}
为其他文本字段添加类似的条件