2014-05-21 1 views
0

Я реализовал несколько UITextField's и хочу перейти к следующему текстовому полю, если достигнут максимальный предел. Я осуществил следующий метод делегата, но по какой-то причине происходит сбой, а не переход к следующему текстовому полю при достижении предела ...Переключение между несколькими полями uitext

Любая помощь будет принята с благодарностью ...

- (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

ответ

1

без видел ваш журнал сбоев. эта часть определенно неправильно

NSString *totalText = [textField.text stringByAppendingString:string]; 

новый текст TextField не рассчитывается путем добавления измененных символов, но путем изменения символов в заданном диапазоне

Пожалуйста, попробуйте это, а затем сказать нам результат

NSString * totalText = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
0

То, как вы находите длину строки, кажется неуместным.

NSString *totalText = [textField.text stringByAppendingString:string]; 
NSLog(@"Length : %d", [totalText length]); 

Вместо этого, используйте это, чтобы найти длину строки

NSUInteger newLength = [textField.text length] + [string length] - range.length;