下一个代码仅在用户输入第三个字符时才有效。我希望焦点在用户输入第二个字符时移动TextField,但仍保留第一个TextField中的前两个字符。如果我尝试类似newString.length < 2
的内容,当连续输入2个字符时,我会获得第一个UITextField
中的第一个字符和第二个UITextField
中的第二个字符。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (newString.length <= 2 )
{
return YES;
}
else
{
NSInteger nextTag;
nextTag = textField.tag + 1;
UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder) {
[nextResponder becomeFirstResponder];
}
else {
[textField resignFirstResponder];
}
}
return YES;
}
答案 0 :(得分:1)
我相信这应该有效:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if(newString.length == 2)
{
UIResponder* nextResponder = [textField.superview viewWithTag:textField.tag + 1];
if (nextResponder) {
[nextResponder performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1];
}
else {
[textField resignFirstResponder];
}
}
return newString.length <= 2;
}
请尝试并告诉我它是否有效。如果没有,请告诉我有关您的设置的更多信息,我会尝试设置一个类似您的视图,我会更容易尝试解决方案。
好的,编辑以上是有效的。它不是很漂亮,但它能完成这项工作。令人遗憾的是,苹果不会为didChangeCharactersInRange添加一个更合适的方法。
编辑根据Sha的调查结果编辑0.1而不是定时器间隔中的0
编辑根据迈克的建议改变