gpt4 book ai didi

ios - 如何防止用户不删除 UITextField 中的特定字符?

转载 作者:行者123 更新时间:2023-12-03 20:40:02 26 4
gpt4 key购买 nike

在我的iPhone应用程序中,我希望UITextField默认为手机号码有“+”符号。如果用户想更改手机号码,那么他/她可以。但他们不允许从 UITextField 中删除“+”。 “+”符号始终保持在 UITextField 中的原样。

例如:-

+911234567890 - 正确的号码

911234567890 - 号码错误。 + 为必填项。

我尝试使用 UITextField 委托(delegate)方法

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

还使用了通知“UIControlEventEditingChanged”。

提前致谢。

最佳答案

尝试一下。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *head= [textField.text substringToIndex:range.location];
NSString *tail= [textField.text substringFromIndex:range.location];
NSString *phoneNumber = [NSString stringWithFormat:@"%@%@%@",head,string,tail];
if ([string isEqualToString:@""]) {
NSString *deleteString = [tail substringToIndex:1];
if ([deleteString isEqualToString:@"+"]) {
return NO;
}
}else if(![self isValidPhoneNumber:phoneNumber]){
return NO;
}
return YES;
}

通过正则表达式检查有效的电话号码

-(BOOL)isValidPhoneNumber:(NSString*)phoneNumber{
NSString *phoneNumberPattern = @"[+]([0-9])*";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneNumberPattern];

BOOL match = [predicate evaluateWithObject:phoneNumber];
if (match) {
NSLog(@"VALID");
return YES;
}else{
NSLog(@"INVALID");
}
return NO;
}

关于ios - 如何防止用户不删除 UITextField 中的特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com