我想使用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可以在应用程序中保持流量。当呼叫结束时,用户仅在应用程序中。使用原生应用,如果用户想要回到我的应用,用户必须手动打开应用。
答案 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实现的目标。
答案 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]];
}