Как потребовать минимальную длину текста в UITextField перед включением клавиши возврата клавиатуры - PullRequest
3 голосов
/ 07 сентября 2011

В моем приложении пользователи регистрируются или авторизуются на сайте, который требует пароли длиной не менее 6 символов. Чтобы работать с этим, я бы хотел наложить этот минимум в пароле UITextField до того, как будет включена кнопка возврата клавиатуры. Если в XIB задано автоматическое включение клавиши возврата, клавиша возврата будет отключена до тех пор, пока не будет найден хотя бы один символ, и (вопреки моим ожиданиям) его отключение приведет к тому, что клавиша возврата будет запрещена даже без текста.

Может кто-нибудь сказать мне, как я могу держать клавишу возврата отключенной, пока пользователь не введет 6 символов?

Ответы [ 3 ]

7 голосов
/ 07 сентября 2011

Нет очевидного способа отключить клавишу возврата, пока пользователь не введет 6 символов пароля.Тем не менее, у меня есть некоторые другие решения для вас, которые могут служить цели.

  1. Написание небольшого сообщения под полем пароля - «Должно быть не менее 6 символов»
  2. Отображение предупреждениякогда текстовое поле пароля теряет фокус.
-(void)textFieldDidEndEditing:(UITextField *)textField 
 {
   if([password length] <6)
      Show alert. On alert dismiss code block do this -->[password becomeFirstResponder]
 // this takes the focus back to the password field after alert dismiss.
 }
Отображение предупреждения, когда пользователь нажимает клавишу возврата.
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if([password length] <6)
    show alert like above.
}
0 голосов
/ 21 сентября 2017

In Swift 3

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method

textField.resignFirstResponder()
   if let txt = textField.text as? String {
      if(txt.length >= minimum){
         textField.endEditing(true)
      }
   }  
   return false 
}
0 голосов
/ 17 августа 2012

Правильный способ сделать это с textFieldShouldEndEditing: а не textFieldDidEndEditing:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    BOOL shouldEnd = YES;

    if ([[textField text] length] < MINIMUM_LENGTH) {  
        shouldEnd = NO;
    }   

    return shouldEnd;
}
...