在多个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; 
} 
+3

的长度,你能否告诉日志崩溃? –

+0

什么是你的错误? – manujmv

无需看到你的崩溃日志。这部分是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;