iOS打电话提示框反应慢

YDTool.h

///解决iOS打电话提示框反应慢

+ (void)callPhoneStr:(NSString*)phoneStr withVC:(UIViewController*)selfvc;


YDTool.m

///解决iOS打电话提示框反应慢

+ (void)callPhoneStr:(NSString*)phoneStr withVC:(UIViewController*)selfvc {

    if(phoneStr.length>=10) {

        NSString *str2 = [[UIDevice currentDevice] systemVersion];

        if ([str2 compare:@"10.2" options:NSNumericSearch] == NSOrderedDescending || [str2 compare:@"10.2" options:NSNumericSearch] == NSOrderedSame) {

            NSString* PhoneStr = [NSString stringWithFormat:@"telprompt://%@",phoneStr];

            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneStr] options:@{} completionHandler:^(BOOL success) {

                NSLog(@"成功");

            }];

        }else{

            NSMutableString* str1 = [[NSMutableString alloc]initWithString:phoneStr];// 存在堆区,可变字符串

            if(phoneStr.length==10) {

                [str1 insertString:@"-" atIndex:3];// 把一个字符串插入另一个字符串中的某一个位置

                [str1 insertString:@"-" atIndex:7];// 把一个字符串插入另一个字符串中的某一个位置

            }else{

                [str1 insertString:@"-" atIndex:3];// 把一个字符串插入另一个字符串中的某一个位置

                [str1 insertString:@"-" atIndex:8];// 把一个字符串插入另一个字符串中的某一个位置

            }

            NSString* str = [NSString stringWithFormat:@"是否拨打电话\n%@",str1];

            UIAlertController *alert = [UIAlertController alertControllerWithTitle:str message: nil preferredStyle:UIAlertControllerStyleAlert];

            // 设置popover指向的item

            alert.popoverPresentationController.barButtonItem = selfvc.navigationItem.leftBarButtonItem;

            // 添加按钮

            [alert addAction:[UIAlertAction actionWithTitle:@"呼叫" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

                NSLog(@"点击了呼叫按钮10.2下");

                NSString* PhoneStr = [NSString stringWithFormat:@"tel://%@",phoneStr];

                if([PhoneStr hasPrefix:@"sms:"] || [PhoneStr hasPrefix:@"tel:"]) {

                    UIApplication * app = [UIApplication sharedApplication];

                    if([app canOpenURL:[NSURL URLWithString:PhoneStr]]) {

                        [app openURL:[NSURL URLWithString:PhoneStr]];

                    }

                }

            }]];

            [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

                NSLog(@"点击了取消按钮");

            }]];

            [selfvc presentViewController:alert animated:YES completion:nil];

        }

    }

}

使用的话:

if (TARGET_IPHONE_SIMULATOR == 1 && TARGET_OS_IPHONE == 1) {

        NSLog(@"测试机");

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"无法拨打电话!!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil,nil];

        [alert show];

    }else{

        NSLog(@"真机");

       [YDTool callPhoneStr:model.tel withVC:self];

    }

你可能感兴趣的:(iOS打电话提示框反应慢)