【问题标题】:How to require a minimum text length in UITextField before enabling keyboard return key在启用键盘返回键之前如何在 UITextField 中要求最小文本长度
【发布时间】:2011-09-07 06:18:34
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c ios uitextfield uikeyboard


    【解决方案1】:

    在用户输入 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.
     }
    
    1. 当用户按下返回键时显示警报。
    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        if([password length] <6)
        show alert like above.
    }
    

    【讨论】:

    • 谢谢。我非常有信心,我在 Apple 的文档和这里都已经足够努力地寻找解决方案,如果可能的话。你已经证实了我的恐惧,你的替代方案与我想到的备用方案一致。
    【解决方案2】:

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

    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
        BOOL shouldEnd = YES;
    
        if ([[textField text] length] < MINIMUM_LENGTH) {  
            shouldEnd = NO;
        }   
    
        return shouldEnd;
    }
    

    【讨论】:

    • 相对而言,这并没有按照要求“在启用键盘返回按钮之前在密码 UITextField 中设置最小值”
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2010-10-21
      • 2016-05-22
      相关资源
      最近更新 更多