3

Possible Duplicate:
iPhone SDK: Set Max Character length TextField

I have 5 UITextFields, where only 6 characters should be allowed. How can I limit the input to just 6 characters per text field? Any other code I tried failed and I didn't found a way of fixing it, thanks :D EDIT: This is the codes I tested:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSUInteger newLength1 = [serie1.text length] + [string length] - range.length;
    NSUInteger newLength2 = [serie2.text length] + [string length] - range.length;
    NSUInteger newLength3 = [serie3.text length] + [string length] - range.length;
    NSUInteger newLength4 = [serie4.text length] + [string length] - range.length;
    NSUInteger newLength5 = [serie5.text length] + [string length] - range.length;

    if(newLength1 > 6)
        return NO;
    if(newLength2 > 6)
        return NO; 
    if(newLength3 > 6)
        return NO; 
    if(newLength4 > 6)
        return NO; 
    if(newLength5 > 6)
        return NO;

    return YES;
}

and

-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(serie1.text.length >= 6 && range.length == 0) {
        return NO;

    }
    if(serie2.text.length >= 6 && range.length == 0) {
        return NO;

    }
    if(serie3.text.length >= 6 && range.length == 0) {
        return NO;

    }
    if(serie4.text.length >= 6 && range.length == 0) {
        return NO;

    }
    if(serie5.text.length >= 6 && range.length == 0) {
        return NO;

    }
    return YES;
}

Both have the problem that when you write 6 characters then you cannot write anymore on any other text field until you delete the characters you wrote

Community
  • 1
  • 1
pmerino
  • 5,900
  • 11
  • 57
  • 76

2 Answers2

11
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   if(textField.text.length >= 7 && range.length == 0)  
   {
      return NO;
   }
   return YES;
}
Scholle
  • 1,521
  • 2
  • 23
  • 44
PJR
  • 13,052
  • 13
  • 64
  • 104
  • 1
    Whoops nope, when I write 6 characters on a field, I can't write more on the next until I delete the 6 I wrote before – pmerino Aug 26 '11 at 10:02
  • 1
    Nope, I tested this one and the next one, and nothing works, I'll post code on my question, hold on – pmerino Aug 26 '11 at 10:06
  • 1
    please set delegate for all textfields. and you have not need t write for all text fields ..my code will work, copy past as it is and set delegate in nib for all text fields.. – PJR Aug 26 '11 at 10:08
  • 1
    already set them via code and via ib – pmerino Aug 26 '11 at 10:10
  • Ah thanks forgot about that, working now :D – pmerino Aug 26 '11 at 10:12
0

Implement the UITextField Delegate method:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSUInteger newLength = [textField.text length] + [string length] - range.length;

    if(newLength > 6)
        return NO;

    return YES;
}
Akshay
  • 5,747
  • 3
  • 23
  • 35