如何制作有限制的 UITextField

How to make UITextField with limitation

  1. 电话文本字段;
  2. 电子邮件文本字段;

如果我开始输入 phoneTextField,emailTextField 不允许字符。 如果 phoneTextField 长度变为 0,则意味着只有 emailTextField 允许字符。

与开始输入 emailTextField 时相同,phoneTextField 不允许字符。 如果 emailTextFile 长度变为 0,则意味着只有 phoneTextField 允许字符。

请分享示例代码..

使用文本字段委托

将您的两个文本字段 delegate 设置为 self

textFieldDidBeginEditing: 中禁用其他文本字段。

然后在- textFieldDidEndEditing:中检查这个textfield.If length ==0 的长度,设置其他文本字段启用

Swift 例子

我碰巧有两个名为用户名和密码的文本字段。只需更换

func textFieldDidBeginEditing(textField: UITextField) {
    if textField == usernameTextfield{
        passwordTextField.enabled = false
    }
    if textField == passwordTextField{
        usernameTextfield.enabled = false
    }
}
func textFieldDidEndEditing(textField: UITextField) {
    if count(textField.text)==0{
        if textField == usernameTextfield{
            passwordTextField.enabled = true
        }
        if textField == passwordTextField{
            usernameTextfield.enabled = true
        }
    }
}

使用文本文件的委托方法并根据您的要求进行更改,如下面的示例..

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        if (textField==self.txtNewPassword || (textField == self.txtReNewPassword))
        {
            NSString *updatedText = [[textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByReplacingCharactersInRange:range withString:string];
            if (updatedText.length > CHARACTER_COUNT)
            {
                return NO;
            }
        }
        return YES;
    }

做下面的事情你会得到想要的输出。这里EnableDesable可以满足您的要求。

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


    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if (textField.tag == kTextFieldTagPassword && textField.text.length!=0)
        {
            emailTextField.enable = NO;

        }
        else{
            emailTextField.enable = YES;
        }

        if (textField.tag == kTextFieldTagEmail && textField.text.length!=0)
        {
            phoneTextField.enable = NO;

        }
        else{
            phoneTextField.enable = YES;
        }


    });


    return YES;
}

希望对您有所帮助。

您可以使用此委托方法来执行此操作

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField == phoneTextFiled && (emailTextField.text.lenght == 0))
        return YES;

    else if(textField == emailTextField && (phoneTextFiled.text.lenght == 0))
        return YES;

    return NO;

}