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

发布于 2024-12-03 07:48:12 字数 199 浏览 4 评论 0原文

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

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

In my app users register or login at a site that requires passwords at least 6 characters long. To work with that I'd like to impose that minimum in the password UITextField before the keyboard return button is enabled. Setting Auto-enable Return Key in the XIB causes the return key to be disabled until there is at least one character & (contrary to my expectations) turning that off causes the return key to be anabled even with no text.

Can anyone tell me how I can keep the return key disabled until the user has input 6 characters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

紙鸢 2024-12-10 07:48:12

在用户输入 6 个密码字符之前,没有明显的方法可以禁用返回键。不过,我为您提供了一些可能达到目的的其他解决方案。

  1. 在密码字段下方写一条小消息 - “必须至少 6 个字符”
  2. 当密码文本字段失去焦点时显示警报。
-(void)textFieldDidEndEditing:(UITextField *)textField 
 {
   if([密码长度] <6)
      显示警报。在警报解除代码块时执行此操作 -->[密码变为FirstResponder]
 // 警报解除后,这会将焦点带回密码字段。
 }
  1. 当用户按下返回键时显示警报。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if([密码长度] <6)
    像上面一样显示警报。
}

There is no apparent way to disable the return key until the user has entered 6 password characters. However, I have some other solutions for you that might serve the purpose.

  1. Writing a small message below the password field -- "Must be at least 6 characters"
  2. Showing alert when the password textfield loses focus.
-(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. Showing alert when the user presses return key.
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if([password length] <6)
    show alert like above.
}
同展鸳鸯锦 2024-12-10 07:48:12

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

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

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

    return shouldEnd;
}

The correct way to do this is with textFieldShouldEndEditing: and not textFieldDidEndEditing:

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

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

    return shouldEnd;
}
如痴如狂 2024-12-10 07:48:12

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

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 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文