问题
Im calling UITableViewCell delegate method TextField:shouldChangeCharactersInRange:replacementString: on a custom cell that has four UITextFields and what is happening once maxlength is reached on one of the fields it dose not let you enter any text in the other fields because its always returning "no" for that initial if statement thats being satisfied. any ideas on how to get around this?
I'm only testing on two fields at the moment. Thank you for any help in advance.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
int regFieldOnelength = [regFieldOne.text length] ;
int regFieldTwolength = [regFieldTwo.text length] ;
if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
return NO;
}
if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
return NO;
}
}
return YES;
}
回答1:
Why are you using booth the text field, Instead use the current text field that is being edited
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
int currentTxtLen = [textField.text length] ;
if (currentTxtLen >= MAXLENGTH && ![string isEqualToString:@""]) {
return NO;
}
return YES;
}
回答2:
Can you try
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
int regFieldOnelength = [regFieldOne.text length] ;
int regFieldTwolength = [regFieldTwo.text length] ;
if((textField == regFieldOne) ||(textField == regFieldTwo)) {
if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
return NO;
}
if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
return NO;
}
}
return YES;
}
else {
return YES;
}
}
来源:https://stackoverflow.com/questions/5959083/textfieldshouldchangecharactersinrangereplacementstring-return-trap