Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对iPhone中用户输入的电话号码的文本字段进行验证?_Iphone_Objective C_Ios_Ipad_Uitextfield - Fatal编程技术网

如何对iPhone中用户输入的电话号码的文本字段进行验证?

如何对iPhone中用户输入的电话号码的文本字段进行验证?,iphone,objective-c,ios,ipad,uitextfield,Iphone,Objective C,Ios,Ipad,Uitextfield,我有一个应用程序,其中我有一个文本字段,用户在其中输入他的手机号码,包括他的国家代码。要输入的手机号码格式为+91-9884715715。当用户输入其手机号码时,应首先验证用户输入的第一个值是否为“+”,然后在“+”之后输入的号码不应小于0 但在这之后,我感到困惑的是,如何获取在+和-之间输入的数字,因为用户输入的国家代码和在+和-之间输入的数字长度必须是动态的,而不是静态的。试试这个,可能会对您有所帮助 - (BOOL)textField:(UITextField *) textField s

我有一个应用程序,其中我有一个文本字段,用户在其中输入他的手机号码,包括他的国家代码。要输入的手机号码格式为+91-9884715715。当用户输入其手机号码时,应首先验证用户输入的第一个值是否为“+”,然后在“+”之后输入的号码不应小于0


但在这之后,我感到困惑的是,如何获取在+和-之间输入的数字,因为用户输入的国家代码和在+和-之间输入的数字长度必须是动态的,而不是静态的。

试试这个,可能会对您有所帮助

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

    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (textField == self.yourphoneNumberfield) {   
    NSArray *sep = [newString componentsSeparatedByString:@"-"];

    if([sep count] >= 2)
    {
        countryCode = [NSString stringWithFormat:@"%@",[sep objectAtIndex:0]];
        if ([[countryCode substringToIndex:1] isEqualToString:@"+"]) {
            phoneNumber = [NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
            return ([countryCode length]+[phoneNumber length]);
        }
    }
}
    return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{

    NSLog(@"Phone Number : %@",phoneNumber);
    if (textField == self.yourphoneNumberfield) {
        if ([phoneNumber length]<10) 
        { 
            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Please Enter a Valid Mobile number" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
            [alert show]; 
        }
    }
    return YES;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:
(NSString*)字符串{
NSString*newString=[textField.text stringByReplacingCharactersInRange:range with string:string];
如果(textField==self.yourphoneNumberfield){
NSArray*sep=[newString组件由字符串分隔:@“-”];
如果([sep计数]>=2)
{
countryCode=[NSString stringWithFormat:@“%@,[sep objectAtIndex:0]];
如果([[countryCode substringToIndex:1]IsequalString:@“+”])){
phoneNumber=[NSString stringWithFormat:@“%@,[sep objectAtIndex:1]];
返回([countryCode长度]+[phoneNumber长度]);
}
}
}
返回YES;
}
-(BOOL)textField应取消编辑:(UITextField*)textField{
NSLog(@“电话号码:%@”,电话号码);
if(textField==self.yourphoneNumberfield){
如果([电话号码长度]参考@Bala的答案

NSString *call = @"+91-9884715715";

// Search for the "+a" starting at the end of string
NSRange range = [call rangeOfString:@"+" options:NSBackwardsSearch];

// What did we find
if (range.length > 0)
  NSLog(@"Range is: %@", NSStringFromRange(range));
编辑 请参阅以下链接:

换线

- (BOOL)validateInputWithString:(NSString *)aString
{
    NSString * const regularExpression = @"^([+]{1})([0-9]{2,6})([-]{1})([0-9]{10})$";
    NSError *error = NULL;
添加代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    char *x = (char*)[string UTF8String];
    //NSLog(@"char index is %i",x[0]);
    if([string isEqualToString:@"-"] || [string isEqualToString:@"+"] || [string isEqualToString:@"0"] || [string isEqualToString:@"1"] ||  [string isEqualToString:@"2"] ||  [string isEqualToString:@"3"] ||  [string isEqualToString:@"4"] ||  [string isEqualToString:@"5"] ||  [string isEqualToString:@"6"] ||  [string isEqualToString:@"7"] ||  [string isEqualToString:@"8"] ||  [string isEqualToString:@"9"] || x[0]==0 ) {

        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength > 18) ? NO : YES;
    } else {
        return NO;
    }
}
编辑 通过演示进行测试:

  //// Button Press Event  

-(IBAction)Check:(id)sender{
    BOOL check = [self validateInputWithString:TextField.text];

    if(check == YES){
        NSLog(@"Hii");
    NSString *string= [NSString stringWithFormat:@"%@", TextField.text];
    NSArray *first = [string componentsSeparatedByString:@"-"];
    NSString *second = [first objectAtIndex:1];
    NSString *third = [first objectAtIndex:0];
    if([second length] < 11){
        NSLog(@"bang");
    }
    else{
        NSLog(@"Fault");
    }
        if([third length] > 3 || [third length] < 7){ 
            NSLog(@"Bang");
        }
        else{
            NSLog(@"fault");
        }
    }
    else{
        NSLog(@"FAULT");
    }
}
///按钮按下事件
-(iAction)检查:(id)发件人{
BOOL check=[self-validateInputWithString:TextField.text];
如果(检查==是){
NSLog(@“Hii”);
NSString*string=[NSString stringWithFormat:@“%@”,TextField.text];
NSArray*first=[字符串组件由字符串分隔:@“-”];
NSString*second=[first objectAtIndex:1];
NSString*third=[first objectAtIndex:0];
如果([第二个长度]<11){
NSLog(@“bang”);
}
否则{
NSLog(“故障”);
}
如果([第三长度]>3 |[第三长度]<7){
NSLog(@“Bang”);
}
否则{
NSLog(“故障”);
}
}
否则{
NSLog(“故障”);
}
}

转到XIB界面生成器并打开XIB文档选择您的电话号码类型textfield并转到textfield属性,在文本输入特征中,选择键盘选项从默认设置到电话键盘。

尝试以下操作:

NSString *code=@"+91-99999999";
NSRange rr2 = [code rangeOfString:@"+"];
NSRange rr3 = [code rangeOfString:@"-"];
int lengt = rr3.location - rr2.location - rr2.length;
int location = rr2.location + rr2.length;
NSRange aa;
aa.location = location;
aa.length = lengt;
code = [code substringWithRange:aa];
NSLog(@"%@",code);

//限制输入仅限于此字符集中的内容,因此没有表情符号或任何其他疯狂字符

NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];

if ([string rangeOfCharacterFromSet:set].location == NSNotFound) {
  return NO;
}

@Bala我没有使用常规表达式检查此链接这可能会帮助你谢谢!你希望验证哪种电话号码格式。?提及它。但是如何检查用户输入的第一个值是否应为+。如果不是+,则不有效我有一个问题,我想检查用户输入的电话号码是否少于10位数ts.如果小于,则显示alertview。我已完成代码,如果([phoneNumber length]您可以发布您的代码并将这些国家代码和电话号码字符串声明为.h文件吗请在-(BOOL)textfield shouldendediting:(UITextField*)中完成ATEXTFELD only电话号码验证应在textfield End EDITING中完成。如果您只需要写入+、-、和数字字符,则我将更新我的代码。我想检查用户输入的第一个值是否为“+”。如果不是,则无效。在+和-之间,国家/地区代码至少有两位数字,在-手机号码之后为这将是十个数字你能帮我吗?实际上这是工作,但我有一个小问题,即我的国家代码,这是正则表达式的第二部分是动态的,即用户可以输入代码的长度将>={2}和