无法使用UIWebView拨打电话

时间:2014-05-08 09:44:51

标签: ios objective-c ios7 webview uiwebview

我想使用UIWebView拨打电话。我尝试下面的代码,如果我只是按一个按钮,然后单击按钮,执行下面的代码。但是目前按下按钮,我调用api,然后在响应时执行代码。

// Make a call to given phone number
- (void)callPhoneNumber:(NSString *)phoneNumber
{
    if (!self.webView)
    {
        webView = [[UIWebView alloc] init];
        [self.view addSubview:self.webView];
        self.webView.delegate = self;
    }

    // Remove non-digits from phone number
    phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];

    // Make a call
    NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", phoneNumber]];
    [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
}

它甚至没有调用webview委托方法。

可能是什么原因?

请注意,我只想使用网络浏览设置,因此请不要建议使用原生联系人应用。使用webview可以在应用程序中保持流量。当呼叫结束时,用户仅在应用程序中。使用原生应用,如果用户想要回到我的应用,用户必须手动打开应用。

4 个答案:

答案 0 :(得分:0)

要拨打电话号码,您必须拨打-[UIApplication openURL:]

NSString *phoneNumber = @"+5512345678";
NSURL *phoneNumberURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@", phoneNumber]];
[[UIApplication sharedApplication] openURL:phoneNumberURL];

答案 1 :(得分:-1)

为什么不使用它?

NSString *phoneNumberURL = [@"telprompt://" stringByAppendingString: phoneNumber];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumberURL]];

一旦通话结束,用户就会自动回到应用程序。我希望这是你想用webview实现的目标。

https://stackoverflow.com/a/12065542/569497

答案 2 :(得分:-1)

您确定self.webView已初始化吗?

更改:webView = [[UIWebView alloc] init];
收件人:self.webView = [[UIWebView alloc] init];

而且:[NSString stringWithFormat:@"tel:phoneNumber"]没有工作;尝试:[NSString stringWithFormat:@"tel:%@",phoneNumber]

然而,就个人而言,我从未试图以这种方式打电话。

答案 3 :(得分:-4)

如果您想通过UIWebView进行调用,请使用以下示例:

+ (void)callWithString:(NSString *)phoneString
{
  [self callWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneString]]];
}
+ (void)callWithURL:(NSURL *)url
{
  static UIWebView *webView = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{  
    webView = [UIWebView new];
  });
  [webView loadRequest:[NSURLRequest requestWithURL:url]];
}