2013-03-29 3 views
0

У меня есть следующая реализация методы делегата в прошивкой:Невозможно редактировать UITextField после пользователя вошел значение в прошивкой

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

if (textField.tag == 2){ 

     if(textField.text.length > 2) { 

      return NO; 

     } 

     return YES; 

    } 

    else if (textField.tag == 3) { 

     if(textField.text.length > 1) { 

      return NO; 

     } 

} 

код делают необходимые ограничения для пользователя, насколько количества символов что они могут войти. Однако текстовое поле также не позволяет пользователю редактировать текст после его ввода. Он не допускает нажатия клавиш (включая клавишу удаления/возврата). Есть ли способ исправить это, чтобы сохранить ограничение длины текста, но разрешить это значение редактировать пользователем?

+0

BTW - исходя из вашего предыдущего вопроса, вы должны знать, что ваш код даже не будет компилироваться из-за отсутствия «возврата» в конце. – rmaddy

+0

Я только представил соответствующую часть метода :-) – syedfa

ответ

1

Ваши чеки ошибочны. Вы не хотите проверять длину текущего текста, вы хотите проверить длину текста, если это изменение было разрешено.

Попробуйте это:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    if (textField.tag == 2) { 
     return newText.length <= 2; // only allow 2 or less characters 
    } else if (textField.tag == 3) { 
     return newText.length <= 1; // only allow 1 or less characters 
    } else { 
     return YES; 
    } 
} 
+0

Спасибо за ваше решение, это сработало! – syedfa

0

использование ниже кода

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     if (textField.tag == 2) 
     {   
      if (newLength>2) { 
      //  [textField resignFirstResponder]; 
        return NO; 
      } 
      else { 
        return YES; 
      } 
     } 
     else if (textField.tag == 3) 
     { 
      if (newLength>1) { 
      //  [textField resignFirstResponder]; 
        return NO; 
      } 
      else { 
        return YES; 
      } 
     } 
} 

попробовать это, вы будете иметь успех

0

Я использую userInteractionEnabled свойство UITextField для включения и отключения editting. Не уверен, что вы его ищете.

if() // Editable 
    { 
     textField.userInteractionEnabled = YES; 
    } 
    else // Non Editable 
    { 
     textField.userInteractionEnabled = NO; 
    }