如何制作有限制的 UITextField
How to make UITextField with limitation
- 电话文本字段;
- 电子邮件文本字段;
如果我开始输入 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;
}
做下面的事情你会得到想要的输出。这里Enable
和Desable
可以满足您的要求。
- (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;
}
- 电话文本字段;
- 电子邮件文本字段;
如果我开始输入 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;
}
做下面的事情你会得到想要的输出。这里Enable
和Desable
可以满足您的要求。
- (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;
}