在我的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/