在多个uitextfields之间切换
问题描述:
我已经实现了多个UITextField's
,并且想要在达到最大限制时切换到下一个文本字段。我已经实现以下的委托方法,但由于某种原因导致崩溃,而不是切换到达到极限时,下一个文本字段...在多个uitextfields之间切换
任何帮助将不胜感激......
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"%s", __FUNCTION__);
NSString *totalText = [textField.text stringByAppendingString:string];
NSLog(@"Length : %d", [totalText length]);
switch (textField.tag) {
case FirstTextFieldTag: {
if ([totalText length] > MaxLentgthTextField1) {
[self.textField1 resignFirstResponder];
[self.textField2 becomeFirstResponder];
}
break;
}
case SecondTextFieldTag: {
if ([totalText length] > MaxLentgthTextField2) {
[self.textField2 resignFirstResponder];
[self.textField3 becomeFirstResponder];
}
break;
}
case ThirdTextFieldTag: {
if ([totalText length] > MaxLentgthTextField3) {
[self.textField3 resignFirstResponder];
[self.textField4 becomeFirstResponder];
}
break;
}
case FourthTextFieldTag: {
if ([totalText length] > MaxLentgthTextField4) {
[self.textField4 resignFirstResponder];
[self.textField5 becomeFirstResponder];
}
break;
}
case FifthTextFieldTag: {
if ([totalText length] > MaxLentgthTextField5) {
[self.textField5 resignFirstResponder];
return NO;
}
break;
}
default:
break;
}
return YES;
}
答
无需看到你的崩溃日志。这部分是definitly错误
NSString *totalText = [textField.text stringByAppendingString:string];
文本字段的新文本未通过附加改变的字符,但在给定的范围内改变字符计算
请试试这个,然后告诉我们结果
NSString * totalText = [textField.text stringByReplacingCharactersInRange:range withString:string];
答
你找到字符串的长度的方式似乎不合适。
NSString *totalText = [textField.text stringByAppendingString:string];
NSLog(@"Length : %d", [totalText length]);
相反,用它来查找字符串
NSUInteger newLength = [textField.text length] + [string length] - range.length;
的长度,你能否告诉日志崩溃? –
什么是你的错误? – manujmv