如何在启用键盘返回键之前在UITextField中要求最小文本长度

时间:2011-09-07 06:18:35

标签: objective-c ios uitextfield uikeyboard

在我的应用中,用户注册或登录需要密码至少6个字符的网站。为了解决这个问题,我想在启用键盘返回按钮之前将最小值强加到密码UITextField中。在XIB中设置自动启用返回键会导致返回键被禁用,直到至少有一个字符& (与我的期望相反)将其关闭会导致返回键即使没有文本也是如此。

在用户输入6个字符之前,有人能告诉我如何禁用返回键吗?

3 个答案:

答案 0 :(得分:7)

在用户输入6个密码字符之前,没有明显的方法可以禁用返回密钥。但是,我可以为您提供其他可能有用的解决方案。

  1. 在密码字段下面写一条小信息 - “必须至少6个字符”
  2. 密码文本字段失去焦点时显示警报。
  3. -(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.
     }
    
    1. 当用户按下返回键时显示提示。
    2. - (BOOL)textFieldShouldReturn:(UITextField *)textField
      {
          if([password length] <6)
          show alert like above.
      }
      

答案 1 :(得分:0)

正确的方法是使用textFieldShouldEndEditing:而不是textFieldDidEndEditing:

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

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

    return shouldEnd;
}

答案 2 :(得分:0)

在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 
}