我需要有 3 个文本字段,每个文本字段应该只输入 1 个数字(文本字段的最大长度为 1)。我的问题是如何在用户输入数字后自动从 textfield1、textfield2、textfield3 导航?
问问题
319 次
3 回答
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];
}
}
于 2013-11-07T05:41:05.603 回答
1
实现textField:shouldChangeCharactersInRange:replacementString:
委托方法。根据输入到文本字段中的文本,您可以调用becomeFirstResponder
下一个文本字段。
请记住,您想做的事情有很多复杂性。如果用户将一堆文本粘贴到文本字段中会发生什么?如果用户回到已经有值的文本字段会发生什么?
于 2013-11-07T05:16:48.513 回答
0
您可以使用以下代码:
- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {
if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){
[textField2 becomeFirstResponder];
}
}
也为其他文本字段添加类似的条件
于 2013-11-07T05:21:32.443 回答