我需要处理在多个UITextField
之间导航,使用(下一个/完成按钮),现在我需要每个UITextField
中只允许一个文本/数字,我们如何在UITextField
中实现这一点,如下图所示
我最近使用了以下代码,并且能够成功实现,但是遇到了一个问题:当我首次输入文本/数字时,它被输入到UITextField
中,当我第二次输入文本/数字时,它仅用于推到下一个UITextField
。 我想要的是,当我第二次输入文本/数字时,它必须被推到下一个UITextField
,并且值必须在下一个UITextField
中输入
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag<10) {
if ((textField.text.length >= 1) && (string.length > 0))
{
NSInteger nextText = textField.tag + 1;
// Try to find next responder
UIResponder* nextResponder = [textField.superview viewWithTag:nextText];
if (! nextResponder)
[textField resignFirstResponder];
// nextResponder = [textField.superview viewWithTag:1];
if (nextResponder){
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
return NO;
}
}
}
return YES;
}
我用以下代码解决了我的问题,但是我还有一个问题。对于最后一个UITextField,我需要在它填满后立即使其resignFirstResponder。但是当前情况下,只有在用户点击下一个文本框后才会发生resignFirstResponder。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag<10) {
if ((textField.text.length >= 1) && (string.length > 0))
{
NSInteger nextText = textField.tag + 1;
UIResponder* nextResponder = [textField.superview viewWithTag:nextText];
if (! nextResponder)
[textField resignFirstResponder];
if (nextResponder){
[nextResponder becomeFirstResponder];
UITextField* nextTextfield= (UITextField*) [textField.superview viewWithTag:nextText];
if ((nextTextfield.text.length < 1)){
[nextTextfield setText:string];
}
return NO;
}
}
}
return YES;
}